实在是不知道错哪里了……生成树算法

P1194 买礼物

楼主发一下评测链接?
by Karrγ5307 @ 2020-03-22 16:26:48


您用的是什么算法? Prim吗?
by WaltVBAlston @ 2020-03-22 16:34:09


@[I_is_a_english_men](/user/327926) 只A了#5,#7,#11
by lzqy_ @ 2020-03-22 16:36:15


@[Andy_2006](/user/261262) 好像是$Kruskal$ QWQ
by lzqy_ @ 2020-03-22 16:37:14


试试prim
by Karrγ5307 @ 2020-03-22 16:38:12


是答案错误诶 ~~(而且蒟蒻不是很熟悉Prim)~~
by lzqy_ @ 2020-03-22 16:39:57


额我用的也是Kruskal 给您看看? 抱歉没时间帮忙改 ``` #include<iostream> #include<algorithm> using namespace std; int k=1; int p[501]; struct node { int u,v,w; }; int sum=0; int n,b; node a[250001]; int m=0; bool cmp(node c,node d) { return c.w<d.w; } int find(int x) { if(x==p[x]) { return p[x]; } else { p[x]=find(p[x]); return p[x]; } } int main() { cin>>b>>n; for(int i=1;i<=n;i++) { p[i]=i; for(int j=1;j<=n;j++) { int w; cin>>w; m++; if(w==0||w>=b) { a[m].u=i; a[m].v=j; a[m].w=b; } else { a[m].u=i; a[m].v=j; a[m].w=w; } } } sort(a+1,a+m+1,cmp); for(int i=1;i<=m;i++) { if(k==n) { break; } int x=find(a[i].u); int y=find(a[i].v); if(x!=y) { p[x]=y; sum+=a[i].w; k++; } } cout<<sum+b; return 0; } ``` 您可以逐条复制粘贴来进行替换试试
by WaltVBAlston @ 2020-03-22 16:40:37


谢谢谢谢%%%Orz
by lzqy_ @ 2020-03-22 16:41:31


@[栾竹清影](/user/288716) 蒟蒻怀疑是变量名重复的问题....lz变量名可以试试用英文单词(或者拼音)哦...
by LeavingZ @ 2020-03-22 16:42:26


已AC~感谢大佬(^▽^)
by lzqy_ @ 2020-03-22 16:45:43


| 下一页