zoukankan      html  css  js  c++  java
  • hdu 1272

    并查集,这题打代码只用了半个小时,调试却调了四个小时,一直WA,最后发现竟是当输入的图一个顶点也没有的时候,必须输出Yes……无语啊,这种题目真是没意思,特殊情况都不说明,害死人!

    /*
    * hdu1272/linux.c
    * Created on: 2011-8-4
    * Author : ben
    */
    #include
    <stdio.h>
    #include
    <stdlib.h>
    #include
    <string.h>
    #include
    <math.h>

    #define MAXN 100005

    int parent[MAXN];
    int exist[MAXN];

    int myfind(int i) {
    int r = i;
    while (parent[r] != r) {
    r
    = parent[r];
    }
    return r;
    }

    void merge(int a, int b) {
    if (a < b) {
    parent[b]
    = a;
    }
    else {
    parent[a]
    = b;
    }
    }

    void work() {
    int a, b, flag, edge, vertex, i;
    scanf(
    "%d%d", &a, &b);
    while (a != -1 && b != -1) {
    if(a == 0 && b == 0) {
    puts(
    "Yes");
    scanf(
    "%d%d", &a, &b);
    continue;
    }
    flag
    = 1;
    edge
    = vertex = 0;
    memset(exist,
    0, sizeof(exist));
    for (i = 0; i < MAXN; i++) {
    parent[i]
    = i;
    }
    while (a != 0 && b != 0) {
    if (!exist[a]) {
    exist[a]
    = 1;
    vertex
    ++;
    }
    if (!exist[b]) {
    exist[b]
    = 1;
    vertex
    ++;
    }
    edge
    ++;
    if (myfind(a) == myfind(b)) {
    flag
    = 0;
    }
    else {
    merge(myfind(a), myfind(b));
    }
    scanf(
    "%d%d", &a, &b);
    }
    if (flag && (vertex == edge + 1)) {
    puts(
    "Yes");
    }
    else {
    puts(
    "No");
    }
    scanf(
    "%d%d", &a, &b);
    }
    }

    int main() {
    #ifndef ONLINE_JUDGE
    freopen(
    "data.in", "r", stdin);
    #endif
    work();
    return 0;
    }
  • 相关阅读:
    贪心法
    div 样式
    echarts标题(title)配置
    利用svg画路径图 vue
    vue 杂项
    Charset 0x0408D00000/MS936 is not supported by the JVM
    Android开发中Eclipse常用快捷键
    Java 中强制删除文件的方法
    利用html5的localStorage结合jquery实现日常费用查询器
    Ant编译utf8非法字符:/65279 解决方法
  • 原文地址:https://www.cnblogs.com/moonbay/p/2127886.html
Copyright © 2011-2022 走看看