Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

prim

Posted by 0909698565 at 2016-04-26 20:26:34 on Problem 1258
#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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator