poj1789 MST 读题生涯永不停歇

题目: 链接在此

1、图论刷刷乐#1的第一题,无奈看了好长时间题目还是看不懂= =,明知是最水的题目

2、搜懂题目后,比较裸的MST,但还是决定写个题解,虽然没什么可说的,只是来警戒自己,还是要努力读题,YY大法,这也是水平的一个体现!

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>

using namespace std;

#define clr(x) memset(x,0,sizeof(x))
#define fp1 freopen("in.txt","r",stdin)
#define fp2 freopen("out.txt","w",stdout)
#define pb push_back

#define INF 0x3c3c3c3c
typedef long long LL;

#define typec int
const int V = 2005;
const typec inf = 0x3f3f3f3f;
int vis[V]; typec lowc[V];
int g[V][V];
typec prim(typec cost[][V], int n){
    int i, j, p;
    typec minc, res = 0;
    memset(vis, 0, sizeof(vis));
    vis[0] = 1;
    for(i = 1;i < n;i++) lowc[i] = cost[0][i];
    for(i = 1;i < n;i++){
        minc = inf; p = -1;
        for(j = 0;j < n;j++)
        if(0==vis[j] && minc>lowc[j]){
            minc = lowc[j]; p = j;
        }
        if(inf == minc) return -1;
        res += minc;  vis[p] = 1;
        for(j = 0;j < n;j++){
            if(0 == vis[j] && lowc[j] > cost[p][j])
                lowc[j] = cost[p][j];
        }
    }
    return res;
}
string s[V];
int main()
{
    //fp1;
    int n, m;
    while(scanf("%d", &n)==1 && n) {
        for(int i = 0;i < n;i++)
            cin >> s[i];
        clr(g);
        for(int i = 0;i < n;i++){
            for(int j = 0;j < n;j++){
                if(i == j) { g[i][j] = 0; continue; }
                else {
                    int sum = 0;
                    for(int k = 0;k < 7;k++){
                        if(s[i][k] != s[j][k]) sum++;
                    }
                    g[i][j] = g[j][i] = sum;
                }
            }
        }
        printf("The highest possible quality is 1/%d.\n", prim(g, n));
    }

    return 0;
}

poj1789 MST 读题生涯永不停歇,布布扣,bubuko.com

时间: 2024-08-12 03:10:13

poj1789 MST 读题生涯永不停歇的相关文章

hdu 2079 选课时间(题目已修改,注意读题) 多重背包

选课时间(题目已修改,注意读题) Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3162    Accepted Submission(s): 2472 Problem Description 又到了选课的时间了,xhd看着选课表发呆,为了想让下一学期好过点,他想知道学n个学分共有多少组合.你来帮帮他吧.(xhd认为一样学分的课没区别

【HDU1102】Constructing Roads(MST基础题)

最小生成树水题.prim一次AC 1 #include <iostream> 2 #include <cstring> 3 #include <cstdlib> 4 #include <cstdio> 5 #include <cctype> 6 #include <cmath> 7 #include <algorithm> 8 #include <numeric> 9 10 #define typec int

【HDU1162】Eddy&#39;s picture(MST基础题)

很基础的点坐标MST,一不留神就AC了, - - !! 1 #include <iostream> 2 #include <cstring> 3 #include <cstdlib> 4 #include <cstdio> 5 #include <cmath> 6 #include <cctype> 7 #include <algorithm> 8 #include <numeric> 9 #include &

hdu2098分拆素数和(读题很重要!!!)

分拆素数和 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2098 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 39300    Accepted Submission(s): 17193 Problem Description 把一个偶数拆成两个不同素数的和,有几种拆法呢? Input

【HDU1301】Jungle Roads(MST基础题)

爽爆.史上个人最快MST的记录7分40s..一次A. 1 #include <iostream> 2 #include <cstring> 3 #include <cstdlib> 4 #include <cstdio> 5 #include <cmath> 6 #include <cctype> 7 #include <algorithm> 8 #include <numeric> 9 10 #define

HDU 2079 选课时间(题目已修改,注意读题)【母函数】

选课时间(题目已修改,注意读题) Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3250    Accepted Submission(s): 2551 Problem Description 又到了选课的时间了,xhd看着选课表发呆,为了想让下一学期好过点,他想知道学n个学分共有多少组合.你来帮帮他吧.(xhd认为一样学分的课没区别

选课时间(题目已修改,注意读题)(杭电2079)(母函数)

选课时间(题目已修改,注意读题) Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3024    Accepted Submission(s): 2365 Problem Description 又到了选课的时间了,xhd看着选课表发呆,为了想让下一学期好过点,他想知道学n个学分共有多少组合.你来帮帮他吧.(xhd认为一样学分的课没区别

HDU 4572 Bottles Arrangement(找规律,仔细读题)

题目 //找规律,123321123321123321…发现这样排列恰好可以错开 // 其中注意题中数据范围: M是行,N是列,3 <= N < 2×M //则猜测:m,m,m-1,m-1,m-2,m-2,……,2,2,1,1求出前m个数字的和就是答案. //发现案例符合(之前的代码第二天发现案例都跑不对,真不知道我当时眼睛怎么了) #include <iostream> #include<stdio.h> #include<string.h> #inclu

【HDU3371】Connect the Cities(MST基础题)

注意输入的数据分别是做什么的就好.还有,以下代码用C++交可以过,而且是500+ms,但是用g++就会TLE,很奇怪. 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 #include <cstdlib> 5 #include <cmath> 6 #include <cctype> 7 #include <algorithm> 8 #incl