zoukankan      html  css  js  c++  java
  • Poj(1789),最小生成树,Prim

    题目链接:http://poj.org/problem?id=1789

    还是套路。

    #include <stdio.h>
    #include <string.h>
    
    #define INF 0x3f3f3f3f
    
    int maps[2005][2005];
    char str[2005][2005];
    int dis[2005];
    bool vis[2005];
    int n;
    
    int Prim()
    {
        memset(vis,false,sizeof(vis));
        for(int i=1; i<=n; i++)
            dis[i] = INF;
        int ans=0;
        dis[1] = 0;
        for(int i=1; i<=n; i++)
        {
            int tmp = INF,k=0;
            for(int j=1; j<=n; j++)
            {
                if(!vis[j]&&dis[j]<tmp)
                {
                    tmp = dis[j];
                    k=j;
                }
            }
    
            vis[k] = true;
            ans+=tmp;
            for(int i=1; i<=n; i++)
            {
                if(!vis[i]&&dis[i]>maps[k][i])
                    dis[i] = maps[k][i];
            }
        }
        return ans;
    }
    
    int main()
    {
        while(scanf("%d",&n),n)
        {
            for(int i=0;i<n;i++)
                scanf("%s",str[i]);
    
            for(int i=0;i<n;i++)
            {
                for(int j=0;j<n;j++)
                {
                    int dist = 0;
                    for(int k=0;k<7;k++)
                    {
                        if(str[i][k]!=str[j][k])
                            dist++;
                    }
                    maps[i+1][j+1] = dist;
                }
            }
            printf("The highest possible quality is 1/%d.
    ",Prim());
        }
        return 0;
    }
  • 相关阅读:
    ARTS习惯(8)
    ARTS习惯(7)
    ARTS习惯(6)
    ARTS习惯(5)
    ARTS习惯(4)
    ARTS习惯(3)
    线程状态
    java线程同步
    数据库视图
    数据库事务
  • 原文地址:https://www.cnblogs.com/TreeDream/p/5728397.html
Copyright © 2011-2022 走看看