POJ1233 Prim Kruskal
来源:互联网 发布:iptv管理系统php 编辑:程序博客网 时间:2024/06/08 19:34
还是畅通工程
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 49358 Accepted Submission(s): 22539Problem Description某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。Input测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < 100 );随后的N(N-1)/2行对应村庄间的距离,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间的距离。为简单起见,村庄从1到N编号。当N为0时,输入结束,该用例不被处理。Output对每个测试用例,在1行里输出最小的公路总长度。Sample Input31 2 11 3 22 3 441 2 11 3 41 4 12 3 32 4 23 4 50Sample Output35Huge input, scanf is recommended.HintHint要养成初始化的好习惯OTZ.....// hdu1233.cpp : 定义控制台应用程序的入口点。////kruskal prim#include "stdafx.h"#include<iostream>#include<vector>#include<cstring>#include<algorithm>#include<queue>#define maxn 102#define inf 0x3fffffffusing namespace std;struct node {int u, v, d;node(int uu=-1, int vv=-1, int dd=-1) {u = uu, v = vv, d = dd;}bool operator <(const node& b)const {return d > b.d; //最小堆}};int map[maxn][maxn],fa[maxn],vis[maxn];int dis[maxn];vector<node> edges;vector<node>G[maxn];vector<node>::iterator it;int N;int find(int s) {if (fa[s] == s) {return s;}return fa[s] = find(fa[s]);}void kruskal() {sort(edges.begin(), edges.end());int len = edges.size();for (int i = 1; i <= N; i++) {fa[i] = i;}int num = 0,ans = 0;for (int i = 0; i < len; i++) {node a = edges[i];int f1 = find(a.u), f2 = find(a.v);if (f1 == f2) {continue;}//cout << a.u << " " << a.v << " " << a.d << endl;num++;ans += a.d;fa[f1] = f2;if (num == N - 1) {break;}}cout << ans << endl;}void prim() {priority_queue<node>Q;for (int i = 1; i <= N; i++) {dis[i] = inf;}memset(vis, 0, sizeof(vis));Q.push(node(0, 1, 0));int num = 0,ans = 0;while (!Q.empty()) {node a= Q.top();Q.pop();if (vis[a.v]) {continue;}vis[a.v] = 1;ans += a.d;int u = a.v, d = a.d;for (it = G[u].begin();it!=G[u].end();it++){int vv = it->v;int dd = it->d;if (dis[vv] > dd) {Q.push(node(it->u,it->v,it->d));dis[vv] = dd;}}}cout << ans << endl;}int main(){int u, v, d;while (~scanf("%d", &N),N) {edges.clear(); //清空清空!!!for (int i = 1; i <= N; i++) {G[i].clear();//清空清空!!!}for (int i = 1; i <= N*(N-1)/2; i++) {scanf("%d%d%d", &u,&v,&d);G[u].push_back(node(u,v,d));//edges.push_back(node(u, v, d));G[v].push_back(node(v, u, d));}//kruskal();prim();} return 0;}
阅读全文0 0
- POJ1233 Prim Kruskal
- Prim Kruskal
- Kruskal&&prim
- Kruskal&Prim
- Prim&Kruskal
- kruskal&&prim
- POJ1233 Agri-Net(最小生成树,prim算法)
- Kruskal Prim Dijkstra
- Kruskal Prim Dijkstra
- poj2485 kruskal与prim
- ZOJ 1914 Prim Kruskal
- Prim算法+Kruskal算法
- prim + kruskal 实现
- poj1258Agri Net Kruskal+prim
- hdu 1863(prim&kruskal)
- HDU1879(水Kruskal、Prim)
- poj2421【MST-prim+Kruskal】
- Prim和kruskal
- 【Gradle】Library库工程的release及debug
- SPOJ 422 Transposing is Even More Fun(Polya计数)
- 4925: 城市规划
- WIN7安装DirectSDK
- com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 2 字节的 UTF-8 序列的字节 2 无效。
- POJ1233 Prim Kruskal
- 高性能服务器架构小结
- CodeForces Round#433
- 一道面试题
- [JZOJ5363]生命之树
- inline函数必须定义在头文件吗
- Codeblocks environment error编译器找不到问题解决方法
- POJ 3070 斐波那契数列(矩阵快速幂(版题))
- 【算法】图的最短路径(Floyd算法)
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
什么叫卵泡期
小卵泡排卵成功怀孕
优质卵泡是多大
卵泡期怀孕几率
优势卵泡的标准
卵泡期是安全期吗
卵泡不圆是质量不好吗
卵泡长到多大会排出
卵泡生长速度
卵泡生长周期
有卵泡就会排卵吗
优势卵泡多大排出
卵泡多是什么意思
无优势卵泡竟然怀孕了
成熟卵泡多大
卵泡的生长发育过程
卵泡排出后b超如何显示
成熟卵泡多大排出
成熟卵泡大小正常范围
卵泡的生长速度变化
卵泡长不好是什么原因
卵泡多的原因
卵泡发育不好怎么食补
吃什么卵泡发育的更好
小卵泡怀孕了能要吗
卵泡中期是什么意思
卵泡是什么东西
什么是卵泡期和黄体期
卵泡多大算成熟几天会排出
卵泡多大会排卵
排卵卵泡大小
正常的卵泡是多大
卵泡多大会排出
排卵期卵泡多大正常
卵泡正常大小
正常卵泡多大
成熟的卵泡有多大
成熟卵泡有多大
卵泡多久排出
卵泡多大正常
成熟卵泡多久排出