uva10305-拓扑排序
来源:互联网 发布:双色球算法公式技巧 编辑:程序博客网 时间:2024/06/04 18:51
思路:用topo数组记录;用dfs终止环;状态标记:-1是正在访问,0是未访问,1是已经访问过了。
代码:
#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 100 + 10;int c[maxn];int topo[maxn], t, G[maxn][maxn];int n,m;bool dfs(int u){ c[u] = -1; //访问标志 for (int v = 0; v < n; v++) if (G[u][v]) { if (c[v] < 0) return false; // 正在访问中,形成环了就退出 else if (!c[v] && !dfs(v)) return false; //没有访问过且访问过发现有环。 } c[u] = 1; topo[--t] = u; return true;}bool toposort(){ t = n; memset(c, 0, sizeof c); for (int u=0; u<n; u++) { if (!c[u] && !dfs(u)) return false; } return true;}int main(){ while(scanf("%d%d", &n, &m) && n+m) { memset(G, 0 ,sizeof G); int a, b; for (int i=0; i<m; i++) { scanf("%d%d", &a, &b); G[a-1][b-1] = 1; } if( toposort()) { for (int i=0; i<n; i++) printf("%d ", topo[i]+1); puts(""); } } return 0;}
0 0
- UVa10305拓扑排序
- 拓扑排序 uva10305
- UVA10305拓扑排序
- uva10305 拓扑排序
- uva10305-拓扑排序
- uva10305 拓扑排序
- Uva10305-拓扑排序
- uva10305 拓扑排序经典dfs
- UVA10305 Ordering Tasks 拓扑排序
- Uva10305 Ordering Tasks(拓扑排序)
- UVA10305 Ordering Tasks(拓扑排序)
- uva10305(拓扑排序dfs)
- UVA10305 Ordering Tasks【DFS】【拓扑排序】
- UVa10305 - Ordering Tasks拓扑排序 天书啊
- Uva10305 - Ordering Tasks(拓扑排序经典例题)
- uva10305- Ordering Tasks(拓扑排序)
- uva10305(拓扑
- uva10305--拓扑
- 【Leetcode】36. Valid Sudoku
- BeautifulSoup 提取某个tag标签里面的内容
- RTSP流媒体花屏
- 《thinking In UML》读书笔记(四)模型的关系表示
- QT中QTableWidget的使用
- uva10305-拓扑排序
- ArrayList 集合的应用
- QTableWidget 点击标题栏 设置排序
- linux内核 策略路由之基本结构
- AJAX学习笔记
- MoodsNote2
- Android官方开发文档Training系列课程中文版:管理设备的睡眠状态
- POJ 3314 Plaque Pack (模拟)
- 面向对象,控制访问