【基础拓扑排序】poj 2376/ural 1022
来源:互联网 发布:dag 软件 编辑:程序博客网 时间:2024/04/28 00:18
简单的topsort,不解释!
可用队列做,也可用for遍历!
#include <vector>#include <list>#include <map>#include <set>#include <queue>#include <string.h>#include <deque>#include <stack>#include <bitset>#include <algorithm>#include <functional>#include <numeric>#include <utility>#include <sstream>#include <iostream>#include <iomanip>#include <cstdio>#include <cmath>#include <cstdlib>#include <limits.h>using namespace std;int lowbit(int t){return t&(-t);}int countbit(int t){return (t==0)?0:(1+countbit(t&(t-1)));}int gcd(int a,int b){return (b==0)?a:gcd(b,a%b);}#define LL long long#define PI acos(-1.0)#define N 1000010#define MAX INT_MAX#define MIN INT_MIN#define eps 1e-8#define FRE freopen("a.txt","r",stdin)int g[110][110];int in[110];int n,cnt;int ans[110];void topsort(){ int i,j,k; cnt=0; /* for(i=1;i<=n;i++){//遍历n次 for(j=1;j<=n;j++) if(in[j]==0) {ans[cnt++]=j;in[j]=-1;break;} for(k=1;k<=n;k++) if(g[j][k]) in[k]--; }*/ queue<int> q; for(i=1;i<=n;i++) if(in[i]==0){ q.push(i); in[i]=-1; break; } while(!q.empty()){ int x=q.front(); q.pop(); ans[cnt++]=x; for(i=1;i<=n;i++){ if(g[x][i]) in[i]--; if(in[i]==0) { in[i]=-1; q.push(i); } } }}int main(){ int i,j,k; while(scanf("%d",&n)!=EOF){ memset(in,0,sizeof(in)); memset(g,0,sizeof(g)); for(i=1; i<=n; i++){ int a; while(scanf("%d",&a)&&a){ g[i][a]=1; in[a]++; } } topsort(); printf("%d",ans[0]); for(i=1;i<cnt;i++) printf(" %d",ans[i]); puts(""); } return 0;}
- 【基础拓扑排序】poj 2376/ural 1022
- URAL 1022 拓扑排序
- Ural 1022 拓扑排序
- 【基础拓扑排序】poj 1094
- URAL - 1022 - Genealogical Tree(拓扑排序)
- URAL 1022 Genealogical Tree (拓扑排序)
- poj 2367 Genealogical tree 【基础拓扑排序】
- ural 1022. Genealogical Tree 拓扑排序
- ural 1022. Genealogical Tree 拓扑排序
- ural 1022. Genealogical Tree 拓扑排序
- POJ 2367---Genealogical tree(拓扑排序基础题)
- 拓扑排序,poj 1094
- 拓扑排序,poj 1094
- POJ 1094 拓扑排序
- poj-1094拓扑排序
- poj 1094 拓扑排序
- POJ 3687 拓扑排序
- POJ 3687 拓扑排序
- HDU 2013 蟠桃记
- Linq 4pm superadmin
- API Demos 2.3 学习笔记 (1)-- 在Ubuntu11.04下搭建Android开发环境
- JQuery AJAX错误捕获
- 面试
- 【基础拓扑排序】poj 2376/ural 1022
- 发一个c语言写的俄罗斯方块的代码 [
- C++写一个简单的堆栈类
- 汉诺塔问题C++的递归实现 [
- 发一个迷宫问题(又称电路板问题)的源码
- 索引选定步骤[摘]
- wxPython Installation
- goole搜索引擎的工作流程
- SQL SERVER – Insert Data From One Table to Another Table – INSERT INTO SELECT – SELECT INTO TABLE