poj2367 Genealogical tree
思路:
拓扑排序,这里是用染色的dfs实现的。在有环的情况下可以判断出来,没有环的情况下输出拓扑排序序列。
实现:
1 #include <vector> 2 #include <cstring> 3 #include <iostream> 4 #include <algorithm> 5 #define w 0 6 #define g 1 7 #define b 2 8 using namespace std; 9 const int N = 105; 10 int G[N][N]; 11 vector<int> res, vis; 12 bool cycle; 13 int n, m; 14 void init() 15 { 16 cycle = false; 17 cin >> n; 18 memset(G, 0, sizeof G); 19 for (int i = 0; i <= n; i++) vis.push_back(w); 20 int x; 21 for (int i = 1; i <= n; i++) 22 { 23 while (cin >> x, x) 24 { 25 G[i][x] = 1; 26 } 27 } 28 } 29 void dfs(int u) 30 { 31 if (vis[u] == b) return; 32 if (vis[u] == g) { cycle = true; return; } 33 vis[u] = g; 34 for (int i = n; i >= 1; i--) 35 { 36 if (G[u][i]) dfs(i); 37 } 38 vis[u] = b; 39 res.push_back(u); 40 return; 41 } 42 void topsort() 43 { 44 for (int i = n; i >= 1; i--) 45 { 46 if (vis[i] == w) dfs(i); 47 } 48 reverse(res.begin(), res.end()); 49 } 50 int main() 51 { 52 init(); 53 topsort(); 54 if (cycle) cout << "There is a cycle in G!" << endl; 55 else 56 { 57 for (int i = 0; i < res.size(); i++) 58 cout << res[i] << " "; 59 cout << endl; 60 } 61 return 0; 62 }
转载于:https://www.cnblogs.com/wangyiming/p/7617959.html
poj2367 Genealogical tree相关推荐
- URAL 1022 Genealogical tree
[报告] 非常非常裸的拓扑排序-- 估计网上面随便拉个拓扑排序的程序,把输入改下都可以用. 本来这道题目可以用链表做,但C++的链表我用不来-- [程序] // TASK: 1022 Genea ...
- 图论之拓扑排序 poj 2367 Genealogical tree
题目链接 http://poj.org/problem?id=2367 题意就是给定一系列关系,按这些关系拓扑排序. #include<cstdio> #include<cstrin ...
- POJ 2367 Genealogical tree【拓扑排序】
题意:大概意思是--有一个家族聚集在一起,现在由家族里面的人讲话,辈分高的人先讲话.现在给出n,然后再给出n行数 第i行输入的数表示的意思是第i行的子孙是哪些数,然后这些数排在i的后面. 比如样例 5 ...
- ICPC程序设计题解书籍系列之五:吴永辉:《数据结构编程实验》(第2版)
第1章 简单计算 UVALive2362 POJ1004 HDU1064 ZOJ1048 Financial Management[数学+水题] - 海岛Blog - CSDN博客 POJ1552 H ...
- 图论 —— AOV 网与拓扑排序
[AOV网] 日常生活中,一项大的工程可以看作是由若干个子工程组成的集合,这些子工程之间必定存在一定的先后顺序,即某些子工程必须在其他的一些子工程完成后才能开始. 我们用有向图来表现子工程之间的先后关 ...
- 【HDOJ图论题集】【转】
1 =============================以下是最小生成树+并查集====================================== 2 [HDU] 3 1213 How ...
- 一系列图论问题[转]
=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自--http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
- POJ前面的题目算法思路【转】
1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...
最新文章
- 【FFmpeg】ffmpeg命令详解(一)
- 进程、线程和上下文切换
- BZOJ5358: [Lydsy1805月赛]口算训练
- mysql主从搭建配置(mysql version5.7.22)
- 剑指offer1:二维数组中的查找
- 云小课|3种常用Git工作流推荐
- MATLAB 符号运算
- JVM内存管理------GC算法精解(五分钟让你彻底明白标记/清除算法)(4)
- H5 Canvas实现荣誉证书生成器
- printf函数,fprintf函数,sprintf函数
- 打包AS中的APK文件
- 12 JAVA编程思想——集合的类型
- 用Facebook做广告和营销,你需要注意哪些问题?
- 牛客网实战项目详细到每一步(更新中)
- Vue脚手架创建项目流程
- python导入库的方式有几种_python库导入的三种方式
- 基础SQL Server 操作问题——对象‘主键’依赖于列‘ID’/标识列‘ID’的数据类型必须是int,bigint,smallint等
- OpenSSL之调用EVP框架实现AES多种加密模式
- 计算机系素描教材,[计算机软件及应用]素描基础教程PPT.ppt
- 网页录屏怎么录制?有哪些好用的录屏方法?
热门文章
- 【源码】net_device结构
- ASP.NET中实现Flash与.NET的紧密集成(转,没看,有空研究一下)
- java.lang.NumberFormatException: For input string: “xxxx.“
- Intellij代码界面导入maven工程,且该maven工程不具备intellij配置文件
- django的数据库名字和models.py中类名的对应关系
- ubuntu19.10安装阿里旺旺
- RStudio修改快捷键确保每次运行都是从头运行所有代码
- sklearn的KNN文档中实例代码的注释
- hexo右下角弄一个live2d的卡通动画小人
- python2.7调用mysql存储过程并且返回结果