POJ 1094 拓扑排序(dfs+删边)
来源:互联网 发布:淘宝企业店铺客服电话 编辑:程序博客网 时间:2024/05/16 19:11
#include<iostream>#include<cstdio>#include<cstring>#include<vector>#include<queue>#include<algorithm>using namespace std;const int maxn=1e5+5;const int maxm=105;vector<int> edge[maxn];int n,m,a,b,flag,now,in[maxm],in1[maxm];void init(){ memset(in,0,sizeof(in)); memset(in1,0,sizeof(in1)); for(int i=0;i<n;i++) edge[i].clear(); flag=now=0;}void dfs(int num){ if(flag) return; if(num==a) {flag=1;return;} for(vector<int>::iterator it=edge[num].begin();it!=edge[num].end();it++) dfs(*it);}void solve(){ queue<int> que,res; for(int i=0;i<n;i++) if(in[i]==0) { que.push(i); res.push(i); if(que.size()>1) return; } while(que.size()) { int num=que.front(); que.pop(); in[num]=-1; for(vector<int>::iterator it=edge[num].begin();it!=edge[num].end();it++) { in[*it]--; if(in[*it]==0) { que.push(*it); res.push(*it); if(que.size()>1) return; } } } sort(in,in+n); if(in[n-1]==-1) { flag=1; printf("Sorted sequence determined after %d relations: ",now); while(res.size()) { printf("%c",res.front()+'A'); res.pop(); } printf(".\n"); }}int main(){ char s[5]; while(scanf("%d%d",&n,&m)!=EOF&&(n||m)) { init(); for(int i=1;i<=m;i++) { scanf("%s",s); if(flag) continue; a=s[0]-'A'; b=s[2]-'A'; dfs(b); if(flag) { printf("Inconsistency found after %d relations.\n",i); continue; } edge[a].push_back(b); in[b]++; in1[b]++; now=i; solve(); if(flag) continue; for(int i=0;i<n;i++) in[i]=in1[i]; } if(!flag) printf("Sorted sequence cannot be determined.\n"); } return 0;}
0 0
- POJ 1094 拓扑排序(dfs+删边)
- poj 1094 DFS--》拓扑排序
- poj 1270(dfs+拓扑排序)
- poj 1094(拓扑排序)
- POJ 1094(拓扑排序)
- poj 1094(拓扑排序)
- poj 1094(拓扑排序)
- POJ 1094(拓扑排序)
- POJ 1094(拓扑排序)
- poj 1270 Following Orders(DFS+拓扑排序)
- poj 1128 Frame Stacking(DFS+拓扑排序)
- poj 1270&& uva 124 Following Orders(拓扑排序、DFS)
- POJ 1128 Frame Stacking(拓扑排序+DFS)
- POJ 1128 Frame Stacking(拓扑排序+dfs)
- POJ 1128 Frame Stacking(拓扑排序+dfs)
- poj 1128 Frame Stacking(DFS+拓扑排序)
- POJ 2367 Genealogical tree(拓扑排序+dfs)
- poj 1270 Following Orders(拓扑排序+dfs)
- 中国游戏年代记
- 队列的实现
- sscanf函数简介
- 选项卡
- day1
- POJ 1094 拓扑排序(dfs+删边)
- 关于最近自己接触到的几个知识点
- Android Drawable的那些事儿
- Qt使用styleSheet制作XP风格的按钮
- Linux shell 学习(四)——case
- 【转】多玩专访郭炜炜 —— 我与西山居,我与剑侠情缘
- Retrofit请求,返回response时报错
- 深度优先搜索(DFS)
- java 知识点(中)