2 barcelonaxavi BarcelonaXavi 于 2016.01.23 16:30 提问

poj1251求助,测试数据通过但wrong answer 5C

用的Kruskal算法,没用并查集而是在结构体里多了一个变量判断是否是一个连通量。
结果wrong answer。

#include
#include
using namespace std;

struct in{
int f,n,price;

};

int main()
{
int m=1,are[10000],root=1,i;

while(m!=0)
{
    int total=0,head=1,tail=1,q[1000]={0},mark=1;
    in r[2000];
    int j,k,z,h,g,x,flag=1,s;
    char c,d;


    total=0;
    scanf("%d",&m);
    if(m==0) break;
    for(i=1;i<=m-1;i++)
  {
    scanf("\n%c",&c);
    z=c-'A'+1;
    scanf("%d",&g);
   for(j=1;j<=g;j++)
    {

        scanf("\n%c%d",&d,&k);

        h=d-'A'+1;
        r[flag].price=k;
        r[flag].f=z;
        r[flag].n=h;
        flag++;
    }



  }
   flag--;
  for(i=1;i<=flag;i++)                                   //排序;
  for(j=1;j<=flag-i;j++)
  {
    if(r[j].price>r[j+1].price)
    {
        r[j].price=r[j].price+r[j+1].price;
        r[j+1].price=r[j].price-r[j+1].price;
        r[j].price=r[j].price-r[j+1].price;

        r[j].f=r[j].f+r[j+1].f;
        r[j+1].f=r[j].f-r[j+1].f;
        r[j].f=r[j].f-r[j+1].f;

        r[j].n=r[j].n+r[j+1].n;
        r[j+1].n=r[j].n-r[j+1].n;
        r[j].n=r[j].n-r[j+1].n;
    }
  }


  for(i=1;i<=flag;i++)
 {                                            //判断是否是一个连通分量


    if(q[r[i].n]==0&&q[r[i].f]==0)
    {
        total=total+r[i].price;
        q[r[i].n]=mark;
        q[r[i].f]=mark;
        mark++;
        continue;


    }

    if(q[r[i].n]!=q[r[i].f])
    {
        total=total+r[i].price;
        if(q[r[i].n]==0)
        {
            q[r[i].n]=q[r[i].f];

        }
        else if(q[r[i].f]==0)
        {
            q[r[i].f]=q[r[i].n];

        }
        else if(q[r[i].n]!=0&&q[r[i].f]!=0)
        {
            for(j=1;j<=26;j++)
          {
            if(q[j]==q[r[i].f])
            q[j]=q[r[i].n];

          } 
        }


    }


 }
 are[root]=total;
 root++;
}
root--;
for(i=1;i<=root;i++)
{
    printf("%d",are[i]);
    if(i<root) printf("\n");
}

}

2个回答

caozhy
caozhy   Ds   Rxr 2016.01.24 01:30
BarcelonaXavi
BarcelonaXavi   2016.01.24 17:00

我是想知道我的哪错了 谢谢

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
poj1001在测试他给的数据结果一模一样,但总是wrong answer
poj1001在测试他给的数据结果一模一样,但总是wrong answer,怎么破
杭电OJ--Wrong Answer报错
这里有个大家会习惯性犯错的地方,就是省略了return 0;查看下,是否是这个低级错误,如果没有那就是代码问题了。
wrong answer 原因
1.浮点型数据用double型,防止超出;2,double型输入输出用%lf;
一道题Wrong Answer之后该何去何从?
敲代码手不稳是个大毛病,往往会让一份能AC的代码变成99.995%正确,失之毫厘谬以千里,最近十场个人赛很少有能一次AC的经历,仔细想想触发根本逻辑上的错误,大概都是跪在这些细节上: 1.输出格式,输入格式是否符合规范,有没有Case #?是否有多余空格输出?I64d or lld?输出浮点数尽量不要用cout。 2.i和j,n和m,l和r有没有写混了的。。(今晚检查了两小时的程序发现i
acm题为什么总是出现wrong answer。。。求大神救助
#include int main() {  char c[100];  char* p, *pm, *head;  int sh;    p = c;  pm = c;  head = c;    while(gets(c))  {   pm =c;   if(*p   {    sh = 1;   }   else   {    sh = 0;  
ACM 中wrong answer(WA)的一种处理办法 UVA10474 where is the marble
ACM 中wrong answer(WA)的一种处理办法 UVA10474 where is the marble
为什么这题交上去显示wrong answer?
#include #include int main() {     unsigned int n,i,c; int j; while(scanf("%d",&n)&&n!=0) { j=sqrt(n); if(n!=1) { for(i=2;i { c=n%i; if(c==0)break; } if(c==0) printf("NO\n"); else p
TSOJ 1350-1352题解
TSOJ 1350-1352题解
The Letter Carrier's Rounds UVA - 814 个人见解
The Letter Carrier's Rounds UVA - 814
poj 1002 487-3279 ((含易错点、测试数据) 简单模拟 )
题目大意: 把大写字母按照对应关系转换成数字,统计每个电话号码出现的次数,按号码升序输出那些有重复的。 思路: 用字符串数组接收输入,转换成七个数字的同时表示成一个七位数,方便比较。 全部转换完后,进行排序。 然后遍历一次,边统计次数,边输出。 思路应该是比较清晰的,提交后却是wa。 然后重新看了一下,发现自己一开始看题的时候有注意到前导零的控制以及“No dupli