拓扑排序 hihoCcoder1174 拓扑排序·一
2015-07-01 19:47
260 查看
最基础的拓扑排序题了,。,两种常用的方法
DFS搜索法
队列法
DFS搜索法
#include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<vector> #include<queue> #include<algorithm> using namespace std; typedef long long LL; const int mod=1e9+7; const int MX=100000+5; const int INF=0x3f3f3f3f; int vis[MX]; vector<int>G[MX]; bool DFS(int u){ if(vis[u]==-1) return true; vis[u]=1; for(int i=0;i<G[u].size();i++){ int v=G[u][i]; if(vis[v]==1||!DFS(v)) return false; } vis[u]=-1; return true; } int main(){ int T,n,m; scanf("%d",&T); while(T--){ scanf("%d%d",&n,&m); memset(vis,0,sizeof(vis)); for(int i=1;i<=n;i++) G[i].clear(); for(int i=1;i<=m;i++){ int u,v; scanf("%d%d",&u,&v); G[u].push_back(v); } bool ans=true; for(int i=1;i<=n;i++){ ans&=DFS(i); if(!ans) break; } printf("%s\n",ans?"Correct":"Wrong"); } return 0; }
队列法
#include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<vector> #include<queue> #include<algorithm> using namespace std; typedef long long LL; const int mod=1e9+7; const int MX=100000+5; const int INF=0x3f3f3f3f; int vis[MX],A[MX]; vector<int>G[MX]; int main(){ int T,n,m; scanf("%d",&T); while(T--){ scanf("%d%d",&n,&m); memset(A,0,sizeof(A)); memset(vis,0,sizeof(vis)); for(int i=1;i<=n;i++) G[i].clear(); for(int i=1;i<=m;i++){ int u,v; scanf("%d%d",&u,&v); G[u].push_back(v); A[v]++; } int cnt=0; queue<int>work; for(int i=1;i<=n;i++){ if(A[i]==0) work.push(i); } while(!work.empty()){ int fp=work.front(); work.pop();cnt++; for(int i=0;i<G[fp].size();i++){ int v=G[fp][i]; A[v]--; if(!A[v]) work.push(v); } } printf("%s\n",cnt==n?"Correct":"Wrong"); } return 0; }
相关文章推荐
- [原]Nginx+Lua服务端合并静态文件
- Java NIO框架Netty教程(六) Java NIO Selector模式
- Java NIO框架Netty教程(七)-再谈收发信息次数问题
- Linux下安装Vapor
- Discard all changes 导致工程文件消失
- Java NIO框架Netty教程(四) ChannelBuffer
- Java NIO框架Netty教程(五) 消息收发次数不匹配的问题
- Eclipse UML 工具 ObjectAid 介绍
- [Unity3D]Unity3D圣骑士模仿游戏开发传仙灵达到当局岛
- 【OpenSource】【Android】Android优秀开源项目
- 【OpenSource】【Android】Android优秀开源项目
- 【OpenSource】【Android】Android优秀开源项目
- 【OpenSource】【Android】Android优秀开源项目
- 【OpenSource】【Android】Android优秀开源项目
- 【OpenSource】【Android】Android优秀开源项目
- 【OpenSource】【Android】Android优秀开源项目
- 字符串查找-strStr
- QtCreator 快捷键
- Java NIO框架Netty教程(三) 字符串消息收发
- 接受、online、见刊时,期刊的 IF 都不同,究竟算发几分期刊?