摘要: http://wikioi.com/problem/1231/Kruskal+并查集。comp函数里面如果用const引用的话,可以减少copy。并查集find的时候是递归找父亲的根。无他。#include #include #include #include #include #include #define MAX(a, b) a>b?a:b#define LEN 100005using namespace std;struct Edge { int a; int b; int val;};int n, m;Edge edges[LEN];int father[LEN];... 阅读全文
posted @ 2013-10-24 23:12 阿牧遥 阅读(210) 评论(0) 推荐(0)
摘要: http://wikioi.com/problem/2833/拓扑排序,居然1A,哈哈。#include #include #include #include #include #include #define MAX(a, b) a>b?a:b#define LEN 105using namespace std; int main(){ int n, m; scanf("%d%d", &n, &m); vector > graph(n+1); vector indegree(n+1); vector visit(n+1); int ans = 阅读全文
posted @ 2013-10-24 22:23 阿牧遥 阅读(204) 评论(0) 推荐(0)
摘要: http://wikioi.com/problem/1077/Floyd算法。精华是三层循环,if (dist(i,k) + dist(k,j) 0,通过分析可以得到:中间顶点不超过k的i到j的最短路径有两种可能:该路径含或不含中间顶点k。状态转移方程:c[i,j,k]=min{c[i,j,k-1], c[i,k,k-1]+c[k,j,k-1]},k>0。所以我们平时看到的Floyd算法就是该动态规划的精简版。#include #include #include #include #define MAX(a, b) a>b?a:b#define LEN 105using namespac 阅读全文
posted @ 2013-10-24 22:03 阿牧遥 阅读(226) 评论(0) 推荐(0)