zoukankan      html  css  js  c++  java
  • Out of Hay

    来源:USACO 2005 March Silver 

    OJ题号:洛谷1547、POJ2395

    思路:

    Kruskal求最小生成树,记录最大边。

     1 #include<cstdio>
     2 #include<cctype>
     3 #include<algorithm>
     4 inline int getint() {
     5     char ch;
     6     while(!isdigit(ch=getchar()));
     7     int x=ch^'0';
     8     while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');
     9     return x;
    10 }
    11 class DisjointSet {
    12     private:
    13         static const int N=2001;
    14         int anc[N];
    15         int Find(const int x) {
    16             return (x==anc[x])?x:(anc[x]=Find(anc[x]));
    17         }
    18     public:
    19         DisjointSet(const int n) {
    20             for(int i=1;i<=n;i++) {
    21                 anc[i]=i;
    22             }
    23         }
    24         bool isConnected(const int x,const int y) {
    25             return Find(x)==Find(y);
    26         }
    27         void Union(const int x,const int y) {
    28             anc[Find(x)]=Find(y);
    29         }
    30 };
    31 struct Edge {
    32     int u,v,w;
    33     bool operator < (const Edge &x) const {
    34         return w<x.w;
    35     }
    36 };
    37 int main() {
    38     int n=getint(),m=getint();
    39     DisjointSet s(n);
    40     Edge e[m];
    41     for(int i=0;i<m;i++) {
    42         e[i].u=getint(),e[i].v=getint(),e[i].w=getint();
    43     }
    44     std::sort(&e[0],&e[m]);
    45     int ans=0;
    46     for(int i=0;i<m;i++) {
    47         if(s.isConnected(e[i].u,e[i].v)) continue;
    48         s.Union(e[i].u,e[i].v);
    49         ans=e[i].w;
    50     }
    51     printf("%d
    ",ans);
    52     return 0;
    53 }
  • 相关阅读:
    开发中的报错问题
    vue2.0入门
    nodejs的一些基操
    git
    es6模块化规范
    js面向对象的笼统介绍
    this指向问题(改变它的指向)
    js面向对象杂谈
    原生js贪吃蛇
    bootstrap基础自我总结
  • 原文地址:https://www.cnblogs.com/skylee03/p/7239643.html
Copyright © 2011-2022 走看看