UVA 10305 拓扑排序
来源:互联网 发布:神雕侠侣06版源码 编辑:程序博客网 时间:2024/06/05 10:54
Ordering Tasks
Time Limit: 3000MS 64bit IO Format: %lld & %llu
Description
Problem descriptions:
System Crawler 2016-08-23
Initialization.
acmparand 2013-08-23
#include"iostream"#include"stdio.h"#include"vector"#include"functional"#include"string"#include"cstring"#include"algorithm"#include"queue"using namespace std;typedef pair<int,int> pii;typedef vector<int> vi;const int maxn=200;int cnt[maxn];int g[maxn][maxn];int visit[maxn];int topo[maxn];int t;int n,m;bool dfs(int u){ visit[u]=-1; //正在访问 for(int v=0;v<n;v++) { if(g[u][v]) { if(visit[v]<0) return false; //自环 与u邻接的点正在被访问 else if(!visit[v]) dfs(v); //未访问 就去访问它 } } visit[u]=1; //标记为访问 topo[--t]=u; return true;}bool topo_sort(){ t=n; memset(visit,0,sizeof(visit)); for(int u=0;u<n;u++) if(!visit[u]) { bool res=dfs(u); if(res==false) return false; //有自环 } return true;}int main(){ /* freopen("b.in","r",stdin); freopen("b.out","w",stdout); */ while(cin>>n>>m&&(n+m)) { int i; memset(g,0,sizeof(g)); for(i=0;i<m;i++) { int u,v; scanf("%d%d",&u,&v); u--;v--; g[u][v]=1; } bool fuck=topo_sort(); if(fuck==false) {cout<<"No"<<endl;continue;} for(i=0;i<n-1;i++) cout<<topo[i]+1<<" "; cout<<topo[n-1]+1<<endl; } return 0;}
#include"iostream"#include"stdio.h"#include"vector"#include"functional"#include"string"#include"cstring"#include"algorithm"#include"queue"using namespace std;typedef pair<int,int> pii;typedef vector<int> vi;const int maxn=200;vi g[maxn];int visit[maxn];int topo[maxn];int t,n,m;bool dfs(int u){ visit[u]=-1; //正在访问 for(int i=0;i<g[u].size();i++) { int v=g[u][i]; if(visit[v]<0) return false; //自环 与u邻接的点正在被访问 else if(!visit[v]) dfs(v); //未访问 就去访问它 } visit[u]=1; //标记为访问 topo[--t]=u; return true;}bool topo_sort(){ t=n; memset(visit,0,sizeof(visit)); for(int u=0;u<n;u++) if(!visit[u]) { bool res=dfs(u); if(res==false) return false; //有自环 } return true;}int main(){ /* freopen("b.in","r",stdin); freopen("b.out","w",stdout); */ while(cin>>n>>m&&(n+m)) { int i; memset(g,0,sizeof(g)); for(i=0;i<m;i++) { int u,v; scanf("%d%d",&u,&v); u--;v--; g[u].push_back(v); } bool fuck=topo_sort(); if(fuck==false) {cout<<"No"<<endl;continue;} for(i=0;i<n-1;i++) cout<<topo[i]+1<<" "; cout<<topo[n-1]+1<<endl; } return 0;}
0 0
- Uva 10305 拓扑排序
- UVA 10305 拓扑排序
- uva 10305 拓扑排序
- uva 10305 拓扑排序
- uva 10305 拓扑排序
- uva 10305 基本拓扑排序
- uva 10305 简单拓扑排序
- UVA 10305 拓扑排序 删边法
- UVA 10305 (拓扑排序 13.07.11)
- uva 10305 Ordering Tasks(拓扑排序)
- uva 10305 Ordering Tasks (拓扑排序)
- UVa 10305 Ordering Tasks (拓扑排序模板)
- [UVA 10305] Ordering Tasks (拓扑排序)
- UVa 10305 - Ordering Tasks 拓扑排序
- UVa 10305 Ordering Tasks(拓扑排序)
- UVa 10305 - Ordering Tasks 拓扑排序题解
- UVA - 10305 Ordering Tasks (拓扑排序)
- Ordering Tasks - UVa 10305 拓扑排序
- JS比较数组差异
- Java产品设计-微信开发设计3《微信产品设计图》
- UNITY 路线
- 【openCV入门之二】 快速上手
- java基本类型数组初始化
- UVA 10305 拓扑排序
- Redis
- Redis教程(六) 有序集合(soted set / zset)类型
- Java产品设计-微信开发设计4《微商城单企业版本设计》
- Android自定义View——自定义ViewPager
- 接口回调
- java byte数组如何截取
- 苏州冯氏 (zz)
- 教你如何使用matlab中的FDATOOL来设计滤波器