| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1246 人关注过本帖
标题:恐怖的并查集测试数据帮我找找错哪了。。。
只看楼主 加入收藏
liucs116
Rank: 2
等 级:论坛游民
帖 子:130
专家分:29
注 册:2009-11-4
结帖率:92.86%
收藏
 问题点数:0 回复次数:0 
恐怖的并查集测试数据帮我找找错哪了。。。
程序代码:
#include<stdio.h>
#include<stdlib.h>
const int MAXSIZE = 500001;
int pre[MAXSIZE];
int i,n,m;                  
int Find(int x)
{
     int p = x;
     int temp;
     while( pre[p] > 0 )   
         p = pre[p];
     while( x != p )
     {
         temp= pre[x];
         pre[x] = p;
         x = temp;
     }
     return x;
}
void Union(int r1, int r2)
{
     int a = Find(r1);
     int b = Find(r2);
     if( a == b )
         return ;
     if( pre[a] < pre[b] )
     {
         pre[a] = pre[b];
         pre[b] = a;
     }
     else
     {
         pre[b] = pre[a];
         pre[a] = b;
     }
}
void Initi(void)
{
    for(i=1;i<=n;i++)
        pre[i] = -1;
}
int main()
{
    FILE *fp1,*fp2;
    fp1=fopen("in.txt","r+");
    fp2=fopen("output.txt","w+");
    int x,y,count,flag;
    while(fscanf(fp1,"%d %d",&n,&m)!=EOF)
    {
        flag=0;
        if(n==0 && m==0)
            break;
        Initi();
        for(i=1;i<=m;i++)
        {
            fscanf(fp1,"%d %d",&x,&y);
            if(x==1 || y==1 &&flag==0)
                flag=1;
            Union(x,y);
        }
        count=0;
        if(flag==1)
        {
            for(i=1;i<=n;i++)
                if(pre[i]!=-1)
                    count++;
        }
        fprintf(fp2,"%d\n",count);
    }
    fclose(fp1);
    fclose(fp2);
}

这是主要的程序
程序代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
    FILE *fp1,*fp2,*fp3;
    int a,b,n=0;
    fp1=fopen("out.txt","r+");
    fp2=fopen("output.txt","r+");
    fp3=fopen("result.txt","w+");
    while(fscanf(fp1,"%d",&a) && fscanf(fp2,"%d",&b)!=EOF)
    {
        n++;
        if(a!=b)
            fprintf(fp3,"%d\n",n);
    }
}

这是判断哪个输出结果错误的程序。。
测试数据.rar (2.01 MB)

问题描述如下:
问题描述
大学的同学来自全国各地,对于远离家乡步入陌生的大学校园的大一新生来说,碰到老乡是多么激动的一件事,于是大家都热衷于问身边的同学是否于自己同乡,来自温州的Kongyi尤其热衷。但是大家都不告诉Kongyi他们来自哪里,只是说与谁同乡,从所给的信息中,你能告诉Kongyi有多少人确定是她的同乡吗?
输入
每个测试实例首先包括2个整数,N(1 <= N <= 1000),M(0 <= M <= N*(N-1)/2)。代表现有N个人(用1~N编号)和M组关系;在接下来的M行里,每行包括2个整数,a,b。 代表a跟b是同乡,当N = 0,M = 0输入结束。已知1表示Kongyi本人。
输出
对于每个测试试实,输出一个整数,代表Kongyi同乡的个数。



主要是第29、72、80个测试数据有问题。。帮忙看看!!!!谢谢了


[ 本帖最后由 liucs116 于 2010-4-10 16:30 编辑 ]
搜索更多相关主题的帖子: 恐怖 数据 
2010-04-10 16:28
快速回复:恐怖的并查集测试数据帮我找找错哪了。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026838 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved