| ||||||||||
| 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 | |||||||||
prim#include <iostream>
#include <cstring>
using namespace std;
const int inf = 0x3f3f3f3f;
const int maxn = 105;
int e[maxn][maxn], dis[maxn], book[maxn];
int prim(int n);
int main()
{
int n;
while(cin>>n&&n)
{
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
cin>>e[i][j];
cout<<prim(n)<<endl;
}
return 0;
}
int prim(int n)
{
int wmin, v, cnt = 0, sum = 0;
for(int i = 0; i < n; i++)
dis[i] = e[0][i];
memset(book, 0, sizeof(book));
book[0] = 1;
cnt++;
while(cnt<n)
{
wmin = inf;
for(int i = 0; i < n; i++)
{
if(book[i]==0&&dis[i]<wmin)
{
wmin = dis[i];
v = i;
}
}
if(wmin==inf)return -1;
book[v] = 1;
sum+=wmin;
cnt++;
for(int i = 0; i < n; i++)
if(book[i]==0&&dis[i]>e[v][i])
dis[i] = e[v][i];
}
return sum;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator