hdu--1232 继续通畅工程
Posted zjydeoneday
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu--1232 继续通畅工程相关的知识,希望对你有一定的参考价值。
wa了8次,超级崩溃,险些自闭,不过倒是学到了很多,先来一段代码:
#include<bits/stdc++.h> using namespace std; int p[1000]; //储存查并集 int n,m; struct node //数组结构体,排序距离 int a,b; int d; v[100000]; bool cmp(node x,node y) return x.d<y.d; int find(int x) int re=x; while(p[re]!=re) re=p[re]; return re; void join(int x,int y) int dx=find(x); int dy=find(y); if(dx!=dy) p[dx]=dy; int main() ios::sync_with_stdio(false); while(cin>>n && n) //N(N-1)/2条路,n个村庄,n!=0 m=n*(n-1)/2; for(int i=1;i<=n;i++) //初始化p p[i]=i; for(int i=0;i<m;i++) //N(N-1)/2组输入 scanf("%d%d%d",&v[i].a,&v[i].b,&v[i].d); //输入 sort(v,v+m,cmp); //排序距离,从小到大 int sum=0; for(int i=0;i<m;i++) if(find(v[i].a)!=find(v[i].b)) //if此时最小距离代表的两个村庄间不连通 join(v[i].a,v[i].b); //连通这两个村庄 sum+=v[i].d; //总距离+ 此时最小距离 printf("%d\\n",sum); return 0;
首先不用管最后hint,这道题就用cin,cout就可以过
其次是这个加速c++输入的语句,用前1300ms,用后300ms,妈妈再也不用担心我的没法飙车了
ios::sync_with_stdio(false);
加速,加速!(~耶~~逮虾户~~)
再然后,就是这个函数最好不要和scanf连用,否则会疯狂的wa wa(比如上述代码>_<)。
最后一点就是这个并查集,最小生成树的模板要记住。
以上。
———2019/8/5 13:04:47;
以上是关于hdu--1232 继续通畅工程的主要内容,如果未能解决你的问题,请参考以下文章