Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:我的更暴力,看看我的强连通分量+传递闭包In Reply To:我的更暴力,看看我的强连通分量+传递闭包 Posted by:qq2308091457 at 2016-08-20 16:17:15 > #include<iostream> > #include<cstdio> > using namespace std; > int map[1002][1002],low[1002],dfn[1002],dfdeep,visit[1002]; > int Z[1002],head,cur[1002]; > int tree[1000][1000],belong[1002]; > int n,m,T,num; > void init() > { > int i,j; > for(i=1;i<=n;i++) > { > visit[i]=dfn[i]=low[i]=cur[i]=belong[i]=0; > for(j=1;j<=n;j++) > map[i][j]=tree[i][j]=0; > } > num=0; > for(i=1;i<=m;i++) > { > int x,y; > scanf("%d%d",&x,&y); > map[x][y]=1; > } > } > void dfs(int x) > { > int i; > head++; > Z[head]=x; > cur[x]=1; > visit[x]=1; > dfdeep++; > low[x]=dfn[x]=dfdeep; > for(i=1;i<=n;i++) > if(map[x][i]) > if(!visit[i]) > { > dfs(i); > if(low[i]<low[x]) > low[x]=low[i]; > } > else > if(cur[i]) > if(dfn[i]<low[x]) > low[x]=dfn[i]; > if(low[x]==dfn[x]) > { > num++; > while(1) > { > if(head<0) > break; > int v=Z[head]; > head--; > belong[v]=num; > cur[v]=0; > if(v==x) > break; > } > } > } > int main() > { > scanf("%d",&T); > while(T--) > { > scanf("%d%d",&n,&m); > init(); > int i,j; > for(i=1;i<=n;i++) > if(!dfn[i]) > { > head=-1; > dfs(i); > if(head>=0) > { > num++; > while(1) > { > if(head<0) > break; > int v=Z[head]; > head--; > belong[v]=num; > } > } > } > int length=0; > for(i=1;i<=n;i++) > for(j=1;j<=n;j++) > if(map[i][j]&&belong[i]!=belong[j]) > tree[belong[i]][belong[j]]=1; > int k; > for(k=1;k<=num;k++) > for(i=1;i<=num;i++) > if(tree[i][k]) > for(j=1;j<=num;j++) > if(tree[k][j]) > tree[i][j]=true; > int flag=1; > for(i=1;i<=num;i++) > for(j=1;j<=num;j++) > if(!tree[i][j]&&!tree[j][i]&&i!=j) > flag=0; > if(flag) > printf("Yes\n"); > else > printf("No\n"); > } > return 0; > } > > > > 然后就哇了。。。。。。 Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator