题意:有n个点,部分点之间可以连接无向边,每条可以连接的边都有一个权值。求一种连接方法将这些点连接成一个连通图,且所有连接了的边中权值最大的边权值最小。

解法:水题,直接用Kruskal算法做一遍就行了,不过还是应该仔细想想为什么Kruskal可行。原因是,在从小边往大边遍历的过程中(一直保持图为连通图),若判定某边i必须被连接,则因为图是连通图,所以连接比它小的边不可能使边i不需要连接,所以,要使边i不需要连接,必须连接比它大的边,根据题目要求,还是连接边i情况更优。

tag:最小生成树

 1 /*
 2  * Author:  Plumrain
 3  * Created Time:  2013-11-24 20:57
 4  * File Name: G-POJ-1861.cpp
 5  */
 6 #include <iostream>
 7 #include <cstdio>
 8 #include <cstring>
 9 #include <algorithm>
10 #include <vector>
11
12 using namespace std;
13
14 #define CLR(x) memset(x, 0, sizeof(x))
15 #define PB push_back
16 const int maxm = 15005 * 2;
17 const int maxn = 1005;
18
19 struct pat{
20     int s, t, l;
21 };
22
23 pat p[maxm];
24 bool v[maxm];
25 vector<int> ans;
26 int n, m, all, f[maxn];
27
28 bool cmp(pat a, pat b)
29 {
30     return a.l < b.l;
31 }
32
33 void init()
34 {
35     int t1, t2, t3;
36     all = 0;
37     for (int i = 0; i < m; ++ i){
38         scanf ("%d%d%d", &t1, &t2, &t3);
39         -- t1; -- t2;
40         p[all].s = p[all+1].t = t1;
41         p[all].t = p[all+1].s = t2;
42         p[all++].l = t3;
43         p[all++].l = t3;
44     }
45 }
46
47 void Kruskal()
48 {
49     sort(p, p+all, cmp);
50     for (int i = 0; i < n; ++ i) f[i] = i;
51     CLR (v);
52     for (int i = 0; i < all; ++ i){
53         int t1 = p[i].s, t2 = p[i].t;
54         while (t1 != f[t1]) t1 = f[t1];
55         while (t2 != f[t2]) t2 = f[t2];
56         if (t1 != t2){
57             v[i] = 1;
58             f[t1] = t2;
59         }
60     }
61 }
62
63 int main()
64 {
65     while (scanf ("%d%d", &n, &m) != EOF){
66         init();
67         Kruskal();
68
69         ans.clear();
70         int cnt = 0;
71         for (int i = 0; i < all; ++ i) if (v[i]){
72             cnt = max(i, cnt);
73             ans.PB(i);
74         }
75         int sz = ans.size();
76         printf ("%d\n%d\n", p[cnt].l, sz);
77         for (int i = 0; i < sz; ++ i)
78             printf ("%d %d\n", p[ans[i]].s+1, p[ans[i]].t+1);
79     }
80     return 0;
81 }

View Code

转载于:https://www.cnblogs.com/plumrain/p/POJ_1861.html

POJ 1861 Network相关推荐

  1. POJ 1861 Network(KUS算法)

    简单的最短路,不过,这题的OUTPUT是错的,要注意. #include<stdio.h> #include<string.h> #include<algorithm&g ...

  2. 【割边缩点】解题报告:POJ - 3694 - Network(Tarjan割边缩点 + LCA + 并查集优化)

    POJ - 3694 - Network 给定一张N个点M条边的无向连通图,然后执行Q次操作,每次向图中添加一条边,并且询问当前无向图中"桥"的数量.N≤105,M≤2∗105,Q ...

  3. POJ 1236 Network of Schools(强连通 Tarjan+缩点)

    POJ 1236 Network of Schools(强连通 Tarjan+缩点) ACM 题目地址:POJ 1236 题意:  给定一张有向图,问最少选择几个点能遍历全图,以及最少加入�几条边使得 ...

  4. [tarjan] poj 1236 Network of Schools

    主题链接: http://poj.org/problem?id=1236 Network of Schools Time Limit: 1000MS   Memory Limit: 10000K To ...

  5. POJ 1236 Network of Schools(tarjan)

    Network of Schools Description A number of schools are connected to a computer network. Agreements h ...

  6. POJ - 1236 Network of Schools

    A number of schools are connected to a computer network. Agreements have been developed among those ...

  7. POJ 1144 Network(无向图连通分量求割点)

    题目地址:POJ 1144 求割点.推断一个点是否是割点有两种推断情况: 假设u为割点,当且仅当满足以下的1条 1.假设u为树根,那么u必须有多于1棵子树 2.假设u不为树根.那么(u,v)为树枝边. ...

  8. POJ - 3417 Network(树上差分)

    题目链接:点击查看 题目大意:(摘自大蓝书)Dark是人类内心的黑暗的产物,古今中外的勇者们都试图打倒它.经过研究,你发现Dark呈现无向图的结构,图中有N个节点和两类边,一类边被称为主要边,而另一类 ...

  9. POJ 1236 Network of Schools(强连通分量缩点求根节点和叶子节点的个数)

    Description: A number of schools are connected to a computer network. Agreements have been developed ...

最新文章

  1. grep 的特殊使用
  2. Redux 学习笔记
  3. RxJava from 处理list时,其中有一个出错时如何继续发送下面的list内容。
  4. [转]Chrome 控制台console的用法
  5. Android --- RecycleView 中默认选择第一个 item,点击第 2 个 item 时改变其字体样式,其余的 item 的字体样式恢复默认
  6. tomcat8源码分析-Connector初始化
  7. golang实现dns域名解析(一)
  8. 写给大数据开发初学者的话
  9. Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '=
  10. 大型网站架构 - 1.架构的演变过程
  11. Activity加载View调用顺序
  12. ENode 2.8 最新架构图简介
  13. pycharm remote 远程项目 同步 本地_利器:PyCharm本地连接服务器搭建深度学习实验环境的三重境界...
  14. [二叉树遍历|BST]leetcode 538 把二叉搜索树转换为累加树
  15. SqlServer 在创建数据库时候指定的初始数据库大小是不能被收缩的
  16. 看拉扎维《模拟CMOS集成电路设计》的一些总结和思考(九)——运算放大器
  17. 使用阿里字体彩色图标
  18. 实体-联系图(ER图)
  19. Python GUI - 利用Tkinter制作个性签名设计软件!
  20. CTrackThread::PreTranslateMessage(MSG* pMsg)

热门文章

  1. 按 结构记录的 相关字段 快速排序
  2. 汽车维修行业呼吁大学生加入修车行列
  3. 举例介绍活动目录的优势
  4. 26/100. Min Stack
  5. Thinkphp 使用过程中,模型中使用其它表却总是没起作用的解决办法
  6. LeetCode 102. Binary Tree Level Order Traversal
  7. userscript.user.js 文件头
  8. 各大门户网站Flash和JS实现的图片幻灯片切换特效代码文件下载:
  9. 控制項學習三(從繼承開始)
  10. npm-卸载并安装指定版本Angular CLI以及报错(npm ERR! Error: EACCES: permission denied)