UVA - 10305 Ordering Tasks

来源:互联网 发布:淘宝假太岁什么做的 编辑:程序博客网 时间:2024/05/16 19:39

题目大意:给所给出的数字排序,数字满足一定的大小关系,是一题拓扑排序题

解题思路:一个个的遍历下去,找到所对应的大小关系,一对数字可以看成是二维数组中的点,行是优先级较高的

#include<cstdio>#include<cstring>int vis[110];int cur[110][110];int num[200];int n , m ,top;void dfs(int u) {int v ;vis[u] = 1;for(v = 1; v <= m; v++)if(cur[u][v] && !vis[v]) {dfs(v);}num[--top] = u;}int main() {int i, j, l;while(scanf("%d %d", &m, &n) != EOF) {if(m == 0 && n== 0)break;top = m;memset(vis,0,sizeof(vis));memset(cur,0,sizeof(cur));memset(num,0,sizeof(num));for(i = 0; i < n; i++) {scanf("%d %d",&j, &l);cur[j][l] = 1;}for(i = 1; i <= m; i++) {if(!vis[i]) {dfs(i);}}for(i = 0; i < m; i++){if(i)printf(" ");printf("%d", num[i]);}printf("\n");}return 0;}


0 0