hihoCoder#1109 最小生成树三·堆优化的Prim算法
2015-04-06 23:58
239 查看
原题地址
坑了我好久。。。提交总是WA,找了个AC代码,然后做同步随机数据diff测试,结果发现数据量小的时候,测试几十万组随机数据都没问题,但是数据量大了以后就会不同,思前想后就是不知道算法写得有什么问题,因为本来就没什么复杂的地方嘛!
后来,突然灵机一动,莫非又是数组开小了?
突然意识到,我是用数组保存图的,所以对于无向图,边数实际上是输入的2倍,于是把数组开成2倍大小,AC了。。。。
我总算知道之前这句温馨提示的意思了。。。
代码:
坑了我好久。。。提交总是WA,找了个AC代码,然后做同步随机数据diff测试,结果发现数据量小的时候,测试几十万组随机数据都没问题,但是数据量大了以后就会不同,思前想后就是不知道算法写得有什么问题,因为本来就没什么复杂的地方嘛!
后来,突然灵机一动,莫非又是数组开小了?
突然意识到,我是用数组保存图的,所以对于无向图,边数实际上是输入的2倍,于是把数组开成2倍大小,AC了。。。。
我总算知道之前这句温馨提示的意思了。。。
代码:
#include <iostream> #include <cstring> #include <queue> using namespace std; #define MAX_POINT 2000008 int N, M; int u[MAX_POINT]; int v[MAX_POINT]; int w[MAX_POINT]; struct mycmp { bool operator()(const int &i, const int &j) const { return w[i] > w[j]; } }; int f[MAX_POINT]; int n[MAX_POINT]; priority_queue<int, vector<int>, mycmp> q; bool visited[MAX_POINT]; int prime() { int res = 0; int left = N - 1; visited[1] = true; for (int i = f[1]; i != 0; i = n[i]) q.push(i); while (!q.empty() && left) { int e = q.top(); q.pop(); if (visited[v[e]]) continue; res += w[e]; left--; visited[v[e]] = true; for (int i = f[v[e]]; i != 0; i = n[i]) { if (!visited[v[i]]) q.push(i); } } return res; } int main() { memset(f, 0, sizeof(f)); memset(visited, 0, sizeof(visited)); scanf("%d%d", &N, &M); for (int i = 1, j = 1; i <= M; i++) { int a, b, c; scanf("%d%d%d", &a, &b, &c); u[j] = a; v[j] = b; w[j] = c; n[j] = f[a]; f[a] = j++; u[j] = b; v[j] = a; w[j] = c; n[j] = f[b]; f[b] = j++; } printf("%d\n", prime()); return 0; }
相关文章推荐
- hiho一下 第二十九周 最小生成树三·堆优化的Prim算法【14年寒假弄了好长时间没搞懂的prim优化:prim算法+堆优化 】
- hihocoder 1109 : 最小生成树三·堆优化的Prim算法
- HIHO #1109 : 最小生成树三·堆优化的Prim算法
- #1109 : 最小生成树三·堆优化的Prim算法
- hihoCoder 1109 最小生成树三·堆优化的Prim算法
- hihocoder1097、1109最小生成树(prim算法+堆优化)
- hiho一下 第二十八周 最小生成树三·堆优化的Prim算法
- hiho 29 最小生成树三·堆优化的Prim算法
- B - Networking——最小生成树_Prim算法(未堆优化)
- hihocoder #1109 最小生成树三·堆优化的Prim算法
- java编写Prim算法实现最小生成树(LazyPrim算法的优化版)
- 最小生成树(二)--prim算法实现以及堆优化
- prim算法最小生成树(优化)
- hdu1233 还是畅通工程 最小生成树 Prim算法堆优化
- 最小生成树 堆优化的Prim算法
- hiho刷题日记——第二十九天最小生成树三·堆优化的Prim算法
- 最小生成树Prim算法 堆优化
- prim算法最小生成树(未优化)
- hdu 1301 Jungle Roads(最小生成树Prim算法)
- POJ 1258-Agri Net 最小生成树Prim算法