zoukankan      html  css  js  c++  java
  • 【题解】Luogu P2212 [USACO14MAR] 浇地 Watering the Fields 最小生成树

    裸的板子,判一下d和c的大小

    我菜死了,kruskal写挂的原因竟然是,sort的范围错了

    WA到爆了

    kruskal都忘了怎么写,赶快滚去复习

    code

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 namespace gengyf{
     4 #define ll long long
     5 const int maxn=1e6+10;
     6 inline int read(){
     7     int x=0,f=1;
     8     char c=getchar();
     9     while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
    10     while(c>='0'&&c<='9'){x=(x*10)+c-'0';c=getchar();}
    11     return x*f;
    12 }
    13 int n,c,x[maxn],y[maxn],fa[maxn];
    14 struct edge{
    15     int u,v;
    16     ll w;
    17 }e[maxn*2];
    18 int head[maxn],cnt;
    19 inline void add(int u,int v,int w){
    20     e[++cnt].u=u;e[cnt].v=v;e[cnt].w=w;
    21 }
    22 bool cmp(edge a,edge b){
    23     return a.w<b.w;
    24 }
    25 int find(int x){
    26     return x==fa[x]?x:fa[x]=find(fa[x]);
    27 }
    28 void kruskal(){
    29     int ans=0,tot=0;
    30     for(int i=1;i<=cnt;i++){
    31         int u=find(e[i].u),v=find(e[i].v);
    32         if(u!=v){
    33             fa[u]=v;
    34             ans+=e[i].w;tot++;
    35         }
    36         if(tot==n-1)break;
    37     }
    38     if(tot==n-1)printf("%d
    ",ans);
    39     else puts("-1");
    40 }
    41 int main(){
    42     n=read();c=read();
    43     for(int i=1;i<=n;i++){
    44         x[i]=read();y[i]=read();
    45         for(int j=1;j<i;j++){
    46             int d=(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]);
    47             if(d>=c){
    48                 add(i,j,d);
    49             }
    50         }
    51     }
    52     sort(e+1,e+1+cnt,cmp);
    53     for(int i=1;i<=n;i++)fa[i]=i;
    54     kruskal();
    55     return 0;
    56 }
    57 }
    58 signed main(){
    59   gengyf::main();
    60   return 0;
    61 }
    View Code
  • 相关阅读:
    计算机图形学——几何变换的数学基础
    算法设计与分析——多边形游戏(动态规划)
    算法设计与分析——凸多边形最优三角剖分(动态规划)
    计算机图形学——反走样
    Android 5.0 API
    Android 6.0 API
    Android 7.0 新增功能和api
    Android 8.0 功能和 API
    Android P 功能和 API
    解决华为手机无法输出Debug级别log的问题
  • 原文地址:https://www.cnblogs.com/gengyf/p/11629882.html
Copyright © 2011-2022 走看看