UVA 10305
来源:互联网 发布:星星知我心第二部全集 编辑:程序博客网 时间:2024/06/05 00:37
题目大意:有1~n个编号,给你m个二元关系,表示前者小于后者,请你给出一个满足所有二元关系的排序。
解题思路:拓扑排序问题,不包含dfs,小紫中有,但感觉难理解,查了一些大概理解一点。将问题转化为n个点,每个二元关系表示有指向的线,得到的图,先将入度为0的输出,然后将入度为0的编号与其他二元关系解除,同时将与入度为0的存在关系的编号的入度-1。循环输出。两个点,map[a][b]表示a与b有无(1或0)元关系,inde[a]表示a的入度。
ac代码:
#include <iostream>#include <cstring>#include <set>using namespace std;int main(){set <int>se; int n, m, map[105][105], inde[105], a, b;while (scanf("%d%d", &n, &m)!=EOF){if (!n && !m)break;memset(inde, 0, sizeof(inde));memset(map, 0, sizeof(map));for (int i=0; i<m; i++){scanf("%d%d", &a, &b);inde[b]++;map[a][b] = 1;}for (int i=1; i<=n; i++)for (int j=1; j<=n; j++)if (!inde[j] && !se.count(j)){se.insert(j);if (se.size() == n)printf("%d\n", j);elseprintf("%d ", j);for (int k=1; k<=n; k++)if (map[j][k]){map[j][k] = 0;inde[k]--;}}se.clear();}return 0;}
ac代码:
#include <iostream>#include <cstring>using namespace std;int c[1005], topo[1005], n, m;int G[1005][1005], t, t1, t2;bool dfs(int u){c[u] = -1;for (int i=1; i<=n; i++)if (G[u][i]){if (c[i] < 0)return 0;else if (!c[i] && !dfs(i))return 0;}c[u] = 1, topo[--t] = u;return 1;} bool toposort(){t = n;memset(c, 0, sizeof(c));for (int i=1; i<=n; i++)if (!c[i] && !dfs(i))return 0;return 1;}int main(){while (scanf("%d%d", &n, &m) != EOF && n+m){memset(G, 0, sizeof(G));for (int i=0; i<m; i++){scanf("%d%d", &t1, &t2);G[t1][t2] = 1;}if (toposort())for (int i=0; i<n; i++)printf(i==n-1?"%d\n":"%d ", topo[i]);}return 0;}
阅读全文
0 0
- uva 10305
- UVa 10305
- UVA 10305
- uva 10305
- uva 10305
- uva 10305
- uva 10305
- uva 10305
- UVA 10305
- [UVA-10305]
- UVA 10305
- 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
- js事件
- 技术人员日本游学之精益管理
- UVA 10129
- 向量点乘的含义
- hdu 6152 Friend-Graph(拉姆齐定理)
- UVA 10305
- Io 异常: The Network Adapter could not establish the connection解决方案
- TP框架中如何查看PHP信息,例如查找执行哪个php.ini文件
- StringUtils工具类
- 图片缩放
- java for循环输出菱形
- 利用thread和sleep生成字符串的伪随机序列
- 启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法
- 封装dialog大全