poj 1861 network

简介: 点击打开链接poj 1861 思路:最小生成树+并查集+kruskal 分析: 1 模板题,只要按照kruskal的思路即可。 2 题目要求输出的是最小生成树中最大边的最小值,以及多少条边和边的点 代码: #includ...

点击打开链接poj 1861


思路:最小生成树+并查集+kruskal

分析:

1 模板题,只要按照kruskal的思路即可。

2 题目要求输出的是最小生成树中最大边的最小值,以及多少条边和边的点


代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
#define MAXN 15010

int n , m;
int num[MAXN];
int father[MAXN];
int rank[MAXN];
struct Edge{
   int x;
   int y;
   int value;
}e[MAXN];

bool cmp(Edge e1 , Edge e2){
    return e1.value < e2.value;
}

void init_Set(){
    for(int i = 0 ; i <= n ; i++){
       father[i] = i;
       rank[i] = 0;
    }
}

int find_Set(int x){
    if(father[x] != x)
       father[x] = find_Set(father[x]);
    return father[x];
}

void union_Set(int x, int y){
     if(rank[x] > rank[y])
         father[y] = x;
     else{
         if(rank[x] == rank[y])
             rank[y]++;
         father[x] = y;
     }
}

void kruskal(){
     init_Set();
     sort(e , e+m , cmp);
     int cnt = 0;
     for(int i = 0 ; i < m ;i++){
         int root_x = find_Set(e[i].x);
         int root_y = find_Set(e[i].y);
         if(root_x != root_y){
            union_Set(root_x , root_y);
            num[cnt++] = i;
         } 
     }
     printf("%d\n%d\n" , e[num[cnt-1]].value , cnt);
     for(int i = 0 ; i < cnt ; i++)
         printf("%d %d\n" , e[num[i]].x , e[num[i]].y);
}

int main(){
    while(scanf("%d%d" , &n , &m) != EOF){
        for(int i = 0 ; i < m ; i++)
          scanf("%d%d%d" , &e[i].x , &e[i].y , &e[i].value);
        kruskal();
    }
    return 0;
}






目录
相关文章
|
7月前
POJ—2236 Wireless Network
POJ—2236 Wireless Network
|
7月前
Arctic Network( POJ - 2349)
Arctic Network( POJ - 2349)
[POJ 1236] Network of Schools | Tarjan缩点
Description A number of schools are connected to a computer network. Agreements have been developed among those schools: each school maintains a list of schools to which it distributes software (the “receiving schools”).
138 0
[POJ 1236] Network of Schools | Tarjan缩点
|
算法 数据建模
【POJ 1236 Network of Schools】强联通分量问题 Tarjan算法,缩点
题目链接:http://poj.org/problem?id=1236 题意:给定一个表示n所学校网络连通关系的有向图。现要通过网络分发软件,规则是:若顶点u,v存在通路,发给u,则v可以通过网络从u接收到。
1185 0