问题描述】
农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。当然,他需要你的帮助。约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场。为了用最小的消费,他想铺设最短的光纤去连接所有的农场。你将得到一份各农场之间连接费用的列表,你必须找出能连接所有农场并所用光纤最短的方案。每两个农场间的距离不会超过100000。
【输入格式
第一行: | 农场的个数, N ( 3<=N<=100 )。 |
第二行 .. 结 尾 | 后来的行包含了一个 N*N 的矩阵 , 表示每个农场之间的距离。理论 上,他们是 N 行,每行由 N 个用空格分隔的数组成,实际上,他们 限制在 80 个字符,因此,某些行会紧接着另一些行。当然,对角 线将会是 0 ,因为不会有线路从第 i 个农场到它本身。 |
【输出格式】
只有一个输出,其中包含连接到每个农场的光纤的最小长度。
【输入样例】agrinet.in
4
0 4 9 21
4 0 8 17
9 8 0 16
21 17 16 0
【输出样例】agrinet.out
28
1 #include2 #include 3 #include 4 #include 5 using namespace std; 6 int num=1; 7 struct node 8 { 9 int u;10 int v;11 int w;12 int next;13 }edge[10001];14 int head[10001];15 int f[10001];16 int tot=0;17 int cmp(const node &a,const node &b)18 {19 if(a.w