求助大佬,MLE9个,WA1个

P3366 【模板】最小生成树

试试这份(错误在注释里说明了) ```cpp #include<cstdio> #include<algorithm> using namespace std; int n,m,f[10100],sum,ans; bool check=false; struct node { int l,r,v; }k[200100]; //边数数组范围不够大 bool cmp(node a,node b) { return a.v<b.v; } int getf(int x) { if(f[x]==x) return x; return f[x]=getf(f[x]); //应该询问它的父亲f[x],而不是它自己x } int merge(int x,int y) { int f1=getf(x); int f2=getf(y); if(f2!=f1) { f[f2]=f1; return 1; } return 0; } int main() { scanf("%d%d",&n,&m); for(int i=1;i<=m;++i) //点数与边数搞错了 { scanf("%d%d%d",&k[i].l,&k[i].r,&k[i].v); } sort(k+1,k+1+m,cmp); //点数与边数搞错了 for(int i=1;i<=n;++i) f[i]=i; for(int i=1;i<=m;++i) { if(merge(k[i].l,k[i].r)) { sum++; ans+=k[i].v; } if(sum==n-1) { check=true; //应该先标记再推出循环 break; } } if(check) printf("%d",ans); else printf("orz"); return 0; } ```
by lamboo @ 2018-12-22 21:58:10


@[BCZSX](/space/show?uid=126669)
by lamboo @ 2018-12-22 21:58:14


好的,谢谢,刚才也发现了这些错误,真是低级错误,呵呵@[AwKarLeGend](/space/show?uid=68387)
by BCZSX @ 2018-12-22 21:59:35


|