摘要:
题目链接。解题报告:就是Kruskal就行了。。不过WA了很多次。第一个致命错误是。。数据会有很多组(无语了)。。第二个错误是。。for(i=0; i<q; i++){ scanf("%d %d", &a, &b); int x = find(a), y = find(b); p[x] = y;}错写成了for(i=0; i<q; i++){ scanf("%d %d", &a, &b); p[a] = b;}只能说对于并查集理解的并不是十分透彻。。例如,对于1 2, 1 3这两组数据, 操作p[1] = 2, 阅读全文
posted @ 2013-02-14 22:00
Still_Raining
阅读(166)
评论(0)
推荐(0)
摘要:
题目链接。解题报告:拓扑水题一道。1.DFS检测是否有环。#include <stdio.h>#include <string.h>#define MAXN 110int G[MAXN][MAXN], v[MAXN];int n, m;int dfs(int u){ v[u] = -1; int i; for(i=0; i<n; i++)if(G[u][i]){ if(v[i] < 0) return 0; if(!v[i] && !dfs(i)) return 0; } v[u] = 1; return 1;}int topos... 阅读全文
posted @ 2013-02-14 17:21
Still_Raining
阅读(218)
评论(0)
推荐(0)
摘要:
题目链接解题报告:这题小意思。。啦 啦啦#include <stdio.h>#include <string.h>#define MAXN 600int n, m, indegree[MAXN], G[MAXN][MAXN], q[MAXN];int toposort(){ int i, j, k; i=0; while(i<n){ for(j=1; j<=n; j++){ if(indegree[j] == 0){ indegree[j]--; q[i++] = j; ... 阅读全文
posted @ 2013-02-14 16:05
Still_Raining
阅读(1084)
评论(0)
推荐(0)
摘要:
#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAXN 91int v[MAXN], n, t, q[MAXN], G[MAXN][MAXN];int dfs(int i){ v[i] = -1; int j; for(j=1; j<=n; j++) if(G[i][j]){ if(v[j]<0) return 0; //发现环 if(!v[j] && !dfs(j)) return 0; } q[t--] = i; v[i] = 1; //加到.. 阅读全文
posted @ 2013-02-14 13:12
Still_Raining
阅读(187)
评论(0)
推荐(0)
浙公网安备 33010602011771号