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 继续通畅工程的主要内容,如果未能解决你的问题,请参考以下文章

HDU 1232 畅通工程

hdu 1232 畅通工程

hdu-1232 畅通工程

HDU 1232 畅通工程(并查集)

HDU 1232 - 畅通工程

HDU1232畅通工程