BarcelonaXavi 2016-01-23 08:30 采纳率: 0%
浏览 1482
已结题

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

用的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条回答 默认 最新

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!