对杭电彻底无语

唉。。。低级错误!!!qsort(ku,m,sizeof(ku[0]),cmp);原来把m写成n;唉。。。搞了整整一天,看来还是不要拿相似题目的代码改,那样错了也不知道在哪里
总结这题,ku数组尽量开大点,其实跟1863差不多的,本以为改下代码肯定能过,谁知,唉。。。说多了都是泪
#include
#include
int fa[105],n,m,s;
struct node
{
    int be;
    int en;
    int cost;
};
struct node ku[6000];
int cmp(const void *aa,const void *bb)
{
    struct node *a=(struct node *)aa;
    struct node *b=(struct node *)bb;
    return a->cost-b->cost;
}
int find(int x)
{
    if(fa[x]!=x)
    fa[x]=find(fa[x]);
    return fa[x];
}
void kruskal()
{
    int ka,kb,i;
    for(i=0;i
    {
        ka=find(ku[i].be);
        kb=find(ku[i].en);
       if(ka==kb)
                continue;
            else
            {
                s+=ku[i].cost;
                if(ka
                    fa[kb]=ka;
                else
                    fa[ka]=kb;
            }
    }
    }
main()
{
    int i,sf;
    while(scanf("%d",&n),n!=0)
    {
        m=n*(n-1)/2;
         for(i=1;i<=n;i++)
        fa[i]=i;
        for(i=0;i
        {
        scanf("%d%d%d%d",&ku[i].be,&ku[i].en,&ku[i].cost,&sf);
        if(sf==1)
        ku[i].cost=0;
    }
    s=0;
     qsort(ku,m,sizeof(ku[0]),cmp);
        kruskal();
      printf("%d\n",s);
}
}
posted @ 2014-05-19 19:45  awenzero  阅读(91)  评论(0编辑  收藏  举报