2013年2月14日
摘要: 题目链接。解题报告:就是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)