【POJ2421】【最小生成树水题】【prim】
来源:互联网 发布:指向数组元素的指针 编辑:程序博客网 时间:2024/06/05 07:17
Language:
Constructing Roads
Time Limit: 2000MS Memory Limit: 65536KTotal Submissions: 20991 Accepted: 8869
Description
There are N villages, which are numbered from 1 to N, and you should build some roads such that every two villages can connect to each other. We say two village A and B are connected, if and only if there is a road between A and B, or there exists a village C such that there is a road between A and C, and C and B are connected.
We know that there are already some roads between some villages and your job is the build some roads such that all the villages are connect and the length of all the roads built is minimum.
We know that there are already some roads between some villages and your job is the build some roads such that all the villages are connect and the length of all the roads built is minimum.
Input
The first line is an integer N (3 <= N <= 100), which is the number of villages. Then come N lines, the i-th of which contains N integers, and the j-th of these N integers is the distance (the distance should be an integer within [1, 1000]) between village i and village j.
Then there is an integer Q (0 <= Q <= N * (N + 1) / 2). Then come Q lines, each line contains two integers a and b (1 <= a < b <= N), which means the road between village a and village b has been built.
Then there is an integer Q (0 <= Q <= N * (N + 1) / 2). Then come Q lines, each line contains two integers a and b (1 <= a < b <= N), which means the road between village a and village b has been built.
Output
You should output a line contains an integer, which is the length of all the roads to be built such that all the villages are connected, and this value is minimum.
Sample Input
30 990 692990 0 179692 179 011 2
Sample Output
179
Source
PKU Monthly,kicc
[Submit] [Go Back] [Status] [Discuss]
#include <iostream>#include <cstring>#include <cmath>#include <queue>#include <stack>#include <list>#include <map>#include <set>#include <string>#include <cstdlib>#include <cstdio>#include <algorithm>using namespace std; #define rep(i,a,n) for (int i=a;i<n;i++)#define per(i,a,n) for (int i=n-1;i>=a;i--)#define mp push_backint n,m;int g[110][110];bool in[110];int main(){ while(scanf("%d",&n)!=EOF){memset(in,0,sizeof(in));int ret = 0;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){scanf("%d",&g[i][j]);}}scanf("%d",&m);for(int i=0;i<m;i++){int u,v;scanf("%d%d",&u,&v);g[u][v] = 0;g[v][u] = 0;}in[1] = true;for(int i=0;i<n-1;i++){int mins = 0x3f3f3f3f;int p = -1;for(int j=1;j<=n;j++){for(int k=1;k<=n;k++){if(in[j] && !in[k]){if(g[j][k] < mins){mins = g[j][k];p = k;}}}}in[p] = true;ret += mins;} printf("%d\n",ret);} return 0;}
0 0
- 【POJ2421】【最小生成树水题】【prim】
- POJ2421 最小生成树/MST(prim)
- POJ2421 Constructing Roads [最小生成树 prim]
- POJ2421 prim算法求最小生成树
- [POJ2421]最小生成树+PRIM+KRUSKAL
- POJ2421 Constructing Roads(最小生成树,Prim)
- POJ2421(prim)
- 最小生成树(Kruskal算法)--poj2421
- poj2421 最小生成树 克鲁斯
- poj2421 Constructing Roads【最小生成树】
- POJ2421 Constructing Roads(最小生成树)
- POJ2421——最小生成树复习
- poj2421【MST-prim+Kruskal】
- Prim最小生成树
- 最小生成树 prim
- 最小生成树 Prim
- 最小生成树-Prim
- Prim最小生成树
- c# socket编程笔记
- Android Studio 常用快捷键
- Hadoop Shuffle
- Android—压缩图片,减少内存
- POJ-1942-Paths on a Grid-组合数学
- 【POJ2421】【最小生成树水题】【prim】
- sql server和mysql server sql语句对比
- Monitor线程操作(当一个线程中处于等待状态时,另外一个线程来解锁它的等待状态继续执行下去)
- Spring MVC控制层redirect
- 经典算法研究系列:九、图像特征提取与匹配之SIFT算法
- WINDOWS 内存管理笔记
- JDBC ORACLE 数据库隔离级别
- AndroidUniversalImageLoader使用详解
- Rust之语法<2>函数