[HDU-1285] 拓扑排序
2012-10-23 21:38
162 查看
拓扑排序的想法十分简单:找个访问的且入读为0的节点访问,然后标记该节点为访问,删除该节点,更新图中其他节点的入度,接着重复上述过程。
思路简单,程序也很好写,复杂度O(N^2)
思路简单,程序也很好写,复杂度O(N^2)
/* * 拓扑排序 [HDU-1285] * mike-w * 2012-10-23 */ #include<stdio.h> #include<stdlib.h> #include<string.h> #define MAXN 555 int f[MAXN][MAXN]; int in[MAXN]; int tag[MAXN]; int N, M; int main(void) { int i, j, t1, t2, head; while(scanf("%d%d", &N, &M)!=EOF) { memset(f, 0, sizeof(f)); memset(in, 0, sizeof(in)); memset(tag, 0, sizeof(tag)); for(i=0; i<M; i++) { scanf("%d%d", &t1, &t2); f[t1][++f[t1][0]]=t2; in[t2]++; } for(i=0; i<N; i++) { for(j=1; j<=N; j++) if(!in[j] && !tag[j]) break; head=j; printf("%d%c", head, i==N-1?'\n':' '); tag[head]=1; for(j=1; j<=f[head][0]; j++) in[f[head][j]]--; } } return 0; }
相关文章推荐
- HDU 1285--确定比赛名次【拓扑排序 && 邻接表实现】
- HDU 1285 拓扑排序-- 确定比赛名次
- HDU - 1285 (直接拓扑排序)
- HDU-1285-确定比赛名次-拓扑排序(模板)
- HDU 1285 确定比赛名次 拓扑排序
- hdu 1285 拓扑排序起步
- HDU-1285 拓扑排序(入门)
- hdu 1285(拓扑排序)
- HDU 1285 确定比赛名次 拓扑排序
- hdu-1285拓扑排序
- 确定比赛名次,hdu 1285 最简单的拓扑排序,
- HDU 1285 (拓扑排序模板)
- HDU 1285 拓扑排序模板
- HDU-1285 确定比赛名次(拓扑排序)
- hdu 1285(确定比赛名次)拓扑排序
- HDU 1285 确定比赛名次 (拓扑排序)
- hdu 1285 确定比赛名次(拓扑排序)
- HDU 1285 确定比赛名次(字典序最小的拓扑排序)
- hdu 1285 确定比赛名次 拓扑排序
- HDU_1285_拓扑排序(优先队列)