Sorting It All Out(拓扑排序)
2013-08-15 21:26
316 查看
http://poj.org/problem?id=1094
1.判断所给关系是否为合法的拓扑序列,若存在环,输出
"Inconsistency found after %d relations."但仍继续输入。
2.判断是否可以确定序列,若不可以确定,继续输入,若可以确定输出
"Sorted sequence determined after %d relations: %s."后,继续输入数据。
3.若输入完数据仍不可以确定序列,输出"Sorted sequence cannot be determined.".
View Code
1.判断所给关系是否为合法的拓扑序列,若存在环,输出
"Inconsistency found after %d relations."但仍继续输入。
2.判断是否可以确定序列,若不可以确定,继续输入,若可以确定输出
"Sorted sequence determined after %d relations: %s."后,继续输入数据。
3.若输入完数据仍不可以确定序列,输出"Sorted sequence cannot be determined.".
#include<stdio.h> #include<string.h> const int N=102; int map ,in ,vis ; int n,m,flag,top; char s ; void topo() { int cnt,i,j,pos; top = 0; int d ;//存每个点的度数 flag = 1; memset(vis,0,sizeof(vis)); memcpy(d,in,n*sizeof(int)); for (i = 0; i < n; i ++) { cnt = 0; for (j = 0; j < n; j ++) { if (d[j]==0) { cnt++; pos = j; } } if (cnt==0)//存在环 { flag = 0; return ; } if (cnt > 1)//不确定序列 { flag = 2; } --d[pos]; s[top++] = pos+'A'; for (int k = 0; k < n; k ++) { if(map[pos][k]==1) --d[k];//更新度数 } } s[top++] = '\0'; } int main() { while(~scanf("%d%d%*c",&n,&m)) { if (n==0 && m==0) break; flag = 0; memset(in,0,sizeof(in)); memset(map,0,sizeof(map)); char a,b,c; int i; for (i = 1; i <= m; i ++) { scanf("%c%c%c%*c",&a,&b,&c); if (flag)//控制输入 continue; if (!map[a-'A'][c-'A']) { map[a-'A'][c-'A'] = 1; in[c-'A']++; } topo(); if (flag==0) { flag = 1;//以便能继续输入下面的点 printf("Inconsistency found after %d relations.\n",i); } else if (flag==1) { printf("Sorted sequence determined after %d relations: %s.\n",i,s); } else if (flag==2)//无法确定序列,继续输入 { flag = 0;//继续拓扑 } } if (flag==0)//输入完也无法确定序列 printf("Sorted sequence cannot be determined.\n"); } return 0; }
View Code
相关文章推荐
- POJ 1094 Sorting It All Out【拓扑排序】
- poj1094&&zoj1060 Sorting It All Out ——拓扑排序入门题
- POJ 1094 Sorting It All Out (拓扑排序)
- Poj 1094-Sorting It All Out [拓扑排序]
- poj 1094 Sorting It All Out (拓扑排序)
- POJ-1094 Sorting It All Out (拓扑排序)
- 拓扑排序 POJ 1094 Sorting It All Out
- poj1094 Sorting It All Out (拓扑排序)
- POJ 1094 Sorting It All Out【拓扑排序】
- POJ 1094 Sorting It All Out 拓扑排序 难度:0
- poj 1094 && NYOJ 349 Sorting It All Out 拓扑排序 经典
- [ACM] POJ 1094 Sorting It All Out (拓扑排序)
- POJ 1094: Sorting It All Out( 拓扑排序 )
- POJ 1094 Sorting It All Out (拓扑排序)
- POJ 1094 Sorting It All Out 拓扑排序
- POJ1094 Sorting It All Out(拓扑排序)
- poj 1094 Sorting It All Out(拓扑排序 + 邻接表)
- poj 1094 Sorting It All Out 拓扑排序
- [POJ](1094)Sorting It All Out ---拓扑排序(图)
- poj 1094 Sorting It All Out(拓扑排序)