比赛 |
防止浮躁的小练习V0.1 |
评测结果 |
AAAAAAAAAA |
题目名称 |
通信线路 |
最终得分 |
100 |
用户昵称 |
Ostmbh |
运行时间 |
1.181 s |
代码语言 |
C++ |
内存使用 |
8.93 MiB |
提交时间 |
2016-10-07 17:55:38 |
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
int Max=100000000;
int dis[1502][1502];
int Min[1502];
int vis[1502]={0};
int main(){
freopen("mcst.in","r",stdin);
freopen("mcst.out","w",stdout);
int ans=0;
int n,x;
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>x;
if(x==-1)
dis[i][j]=Max;
else
dis[i][j]=x;
}
Min[i]=Max;
}
Min[1]=0;
for(int i=1;i<=n;i++){
int u=-1,min1=Max;
for(int j=1;j<=n;j++)
if(Min[j]<min1&&vis[j]==0){
u=j;
min1=Min[j];
}
if(u==-1)
break;
vis[u]=1;
ans+=Min[u];
for(int j=1;j<=n;j++){
if(j!=u&&vis[j]==0)
if(dis[u][j]<Min[j])
Min[j]=dis[u][j];
}
}
cout<<ans<<endl;
return 0;
}