| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
人生的第一次交一遍就过的题#include<stdio.h>
#include<string.h>
int main(void){
int n; //村庄的数量
int distance[100][100]; //村庄之间的距离
int i,j; //计数
int sum=0; //记录总路程
int d[100]; //记录暂时的最短距离
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&distance[i][j]);
int q; //道路的数量
int k; //计数
scanf("%d",&q);
for(k=0;k<q;k++){
scanf("%d%d",&i,&j);
distance[i-1][j-1]=0;
distance[j-1][i-1]=0;
}
int used[100]; //记录每个村庄是否被录入
memset(used,0,sizeof(used));
used[0]=1;
for(i=0;i<n;i++)
d[i]=distance[0][i];
for(i=0;i<n-1;i++){
int min=1000;
int tag;
for(j=0;j<n;j++){
if(used[j]==0&&d[j]<min){
min=d[j];
tag=j;
}
}
used[tag]=1;
sum+=min;
for(j=0;j<n;j++)
if(used[j]==0&&d[j]>distance[tag][j])
d[j]=distance[tag][j];
}
printf("%d\n",sum);
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator