POJ2485 Highways【最小生成树】【哈哈,第一个首次提交就AC的最小生成树】
因为英语差劲,只能读一句翻译一句。
题意:
flatopia非常平坦,不幸的是,没有高铁,因此交通是一个难题。
政府意识到了这一点,他们计划建一些高铁,这样不用离开高铁系统就能达到任意两个城市。
F的城市从1。。N,每条铁路联通两个城市。每条铁路都是直线,每条铁路都能被两个站使用。
每条铁路都能够互相穿插,但是一个司机只能选择一条铁路。
政府抠门,想建最短的距离铁路,两两联通。
输入:
T(case数)
c1n(3。。500)城市数
N lines n个城市之间的距离(1,65536)int型搞定了
empty line
c2n
..
Problem: 2485 | User: qq1203456195 | |
Memory: 560K | Time: 172MS | |
Language: C | Result: Accepted |
#include <stdio.h> #include <string.h> #define N 502 #define MAX 999999 int T,n,M[N][N],closet[N],visited[N],mindis,maxdis; int min() { int i,t=0; mindis=MAX; for (i=0;i<n;i++) { if(!visited[i]&&closet[i]<mindis) { mindis=closet[i]; t=i; } } return t; } int main() { int i,j,next; scanf("%d",&T); while (T--) { maxdis=0; //read Info scanf("%d",&n); for (i=0;i<n;i++) for (j=0;j<n;j++) scanf("%d",&M[i][j]); //Prim memset(visited,0,sizeof(visited)); for (i=0;i<n;i++) closet[i]=M[0][i]; visited[0]=1; for (i=1;i<n;i++) { next=min(); maxdis=maxdis>mindis?maxdis:mindis; visited[next]=1; for (j=0;j<n;j++) { if (!visited[j]&&M[next][j]<closet[j]) closet[j]=M[next][j]; } } printf("%d\n",maxdis); } return 1; }
找我内推: 字节跳动各种岗位
作者:
ZH奶酪(张贺)
邮箱:
cheesezh@qq.com
出处:
http://www.cnblogs.com/CheeseZH/
*
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。