计蒜客 灌溉
来源:互联网 发布:网络人气榜 编辑:程序博客网 时间:2024/04/28 16:08
题目:点击打开链接
到了旱季农业生产的灌溉就成了一个大问题。为了保证灌溉的顺利,某县政府决定投资为各个村之间建立灌溉管道。
输入第1行包括一个整数N,表示某县的村庄的数量。(3≤N≤100),第2行-结尾为一个N×N的矩阵,表示每个村庄之间的距离。虽然在理论上,他们是N行,每行由N个用空格分隔的数组成,实际上,他们限制在80个字符,因此,某些行会紧接着另一些行。当然,对角线将会是0,因为不会有线路从第i个村到它本身(任何两个村之间的距离都不大于100000)。
输出只有一个,为修建灌溉管道将所有村庄相连在一个灌溉系统里所需的最小管道长度。
样例输入
40 4 9 214 0 8 179 8 0 1621 17 16 0
样例输出
28
#include<stdio.h>#include<stdlib.h>#define MAX 110#define MAXCOST 1000001int graph[MAX][MAX];int Prim(int gragh[][MAX],int n){ int lowcost[MAX]; int mst[MAX]; int i,j,min,minid,sum=0; for(i=2;i<=n;i++){//lowcost初始化 lowcost[i]=graph[1][i]; mst[i]=1; } mst[1]=0; for(i=2;i<=n;i++){ min=MAXCOST; minid=0; for(j=2;j<=n;j++){ //比较 if(lowcost[j]<min&&lowcost[j]!=0){ min=lowcost[j]; minid=j; } } //printf("%c - %c : %d\n", mst[minid] + 'A' - 1, minid + 'A' - 1, min); sum+=min; lowcost[minid]=0; for(j=2;j<=n;j++){ //找新起点,谁小换谁,相同不换 if(graph[minid][j]<lowcost[j]){ lowcost[j]=graph[minid][j]; mst[j]=minid; } } } return sum;}main(){ int i,j,k,N,sum1; scanf("%d",&N); for(i=1;i<=N;i++) for(j=1;j<=N;j++){ scanf("%d",&graph[i][j]); } sum1=Prim(graph,N); printf("%d\n",sum1);}
阅读全文
0 0
- 计蒜客 灌溉
- 计蒜客--第35题:灌溉
- 计蒜客 难题题库 034 灌溉
- 计蒜客-灌溉(java-prim算法)
- 计蒜客 灌溉 (最小生成树之prim算法)
- 计蒜客 实验4-4灌溉 生成树模板
- 最优灌溉
- 农场灌溉问题
- poj2373 灌溉草场
- wpf 浇水灌溉小游戏
- 1144 农场灌溉
- 【CCF】最优灌溉
- ccf 最优灌溉
- CCF 最优灌溉
- 农场灌溉问题ZOJ2412
- CCF 最优灌溉
- 最优灌溉 (201412-4)
- 农场灌溉问题
- 欢迎使用CSDN-markdown编辑器
- Linux shell 经验手册__001__常识
- PAT乙级真题及训练集(15)--1027. 打印沙漏(20)
- 前端学习网站
- C++类和对象
- 计蒜客 灌溉
- C++ Primer Plus读书笔记:std的四种用法
- Java反射机制及IoC原理
- 自动无限轮播广告栏
- display: table-row; 实现等高布局
- 解决struts中Antlr包冲突问题
- select的fd超过1024将会非常危险------select导致core dump (句柄增多/句柄泄露引起)
- Tcp连接建立释放图
- 网络编程(编写一个小型服务器)--csapp11章