#include <iostream>
using namespace std;
int main()
{
//freopen("input.txt","r",stdin);
int N;
int map[101][101];
int Q;
int x,y;
int i,j;
int bVisited[101];
int minx[101];
while(cin>>N)
{
for(i=1;i<=N;i++)
{
for(j=1;j<=N;j++)
{
cin>>map[i][j];
}
}
cin>>Q;
for(i=1;i<=Q;i++)
{
cin>>x>>y;
map[x][y]=map[y][x]=0;
}
for(i=1;i<=N;i++)
{
bVisited[i]=0;
}
int minc;
int k;
int sum=0;
for(i=1;i<=N;i++)
{
minx[i]=map[1][i];
}
bVisited[1]=1;
for(i=2;i<=N;i++)
{
minc=0xFFFFFFF;
for(j=1;j<=N;j++)
{
if(!bVisited[j]&&minc>minx[j])
{
minc=minx[j];
k=j;
}
}
sum+=minc;
bVisited[k]=1;
for(j=1;j<=N;j++)
{
if(!bVisited[j]&&map[k][j]<minx[j])
{
minx[j]=map[k][j];
}
}
}
cout<<sum<<endl;
}
return 0;
}
POJ 2421 minimum spanning tree (prime algorithm)
最新推荐文章于 2020-01-17 00:09:22 发布