10305UVa给任务排序

来源:互联网 发布:java编程实战宝典 pdf 编辑:程序博客网 时间:2024/05/21 09:21

就是拓扑排序

#include<stdio.h>#include<string.h>int n,m;int gra[110][110];int vis[110];int topo[110];int top;void dfs(int u){vis[u] = 1;int v;for(v = 1; v <= n;v++){if(gra[u][v] && !vis[v]){dfs(v);}}topo[--top] = u;}int main(){//freopen("input.txt","r",stdin);while(scanf("%d%d",&n,&m)==2){if(!n&&!m) break;memset(gra,0,sizeof(gra));memset(topo,0,sizeof(topo));memset(vis,0,sizeof(vis));for(int i = 0; i < m;i++){int u,v;scanf("%d%d",&u,&v);gra[u][v] = 1;}top = n;for(int u = 1; u <= n; u++){if(!vis[u]){dfs(u);}}for(int i =0; i < n-1;i++){printf("%d ",topo[i]);}printf("%d\n",topo[n-1]);}}


0 0
原创粉丝点击