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 wangxiyang at 2013-01-24 14:31:10
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <algorithm>
#define Inf 0x3f3f3f3f
#define _clr memset(x,0,sizeof(x))
using namespace std;

inline int min(int a, int b) { return a < b ? a : b;}
inline int max(int a, int b) { return a > b ? a : b;}
inline void swap(int &a, int &b) { int temp = a; a = b; b = temp;}

const int MAXN = 110;
int edge[MAXN][MAXN]; //邻接矩阵
int d[MAXN];
bool vis[MAXN];
int p[110];
int n, m, k;

int Prim(int s)
{
    memset(vis, false, sizeof(vis));
    for(int i = 1; i <= n; ++i) d[i] = Inf;
    d[s] = 0;
    int res = 0;
    for(int i = 1; i <= n; ++i)
    {
        int u = -1;
        for(int j = 1; j <= n; ++j)
        {
            if(!vis[j] && (u == -1 || d[j] < d[u]))
            {
                u = j;
            }
        }
        if(u == -1 || d[u] == Inf) return -1;  //判断不连通的情况
        vis[u] = true;
        res += d[u];
        for(int v = 1; v <= n; ++v)
        {
            if(!vis[v] && edge[u][v] < d[v])
            {
                d[v] = edge[u][v];
            }
        }
    }
    return res;
}


int main()
{
    //freopen("aa.in", "r", stdin);
    int i, j, u, v, w, Q;
    scanf("%d", &n);
    for(i = 1; i <= n; ++i)
    {
        for(j = 1; j <= n; ++j)
        {
            scanf("%d", &w);
            edge[i][j] = w;
        }
    }
    scanf("%d", &Q);
    while(Q--)
    {
        scanf("%d %d", &u, &v);
        edge[u][v] = edge[v][u] = 0;
    }
    printf("%d\n", Prim(1));
    return 0;
}

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