因为英语差劲,只能读一句翻译一句。
题意:
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; }