POJ1861
来源:互联网 发布:淘宝如何增加粉丝 编辑:程序博客网 时间:2024/06/05 10:54
Problem: Network
Description: 给你一个图的一些边,让你求一个边集,使得连通所有的点,并且其中最大的边要最小。
Solution: 首先,我们看到连通所有的点,那不就是最小生成树吗。其中最大的边最小,我们可以想到
Code(C++):
#include <stdio.h>#include <string.h>#include <algorithm>#define MAX(a,b) ((a)>(b)? (a):(b))#define MIN(a,b) ((a)<(b)? (a):(b))const int M=15000+5;const int E=1000+5;using namespace std;typedef struct tagEdge{ int x,y; int v; tagEdge(){} tagEdge(int x,int y,int v) { this->x=x; this->y=y; this->v=v; }}Edge;int n,m;Edge edges[M];int p[E];int T;int num;Edge ans[M];bool cmp(Edge a,Edge b){ return a.v<b.v;}int find(int x){ if(p[x]==x) return x; return p[x]=find(p[x]);}void work(){ for(int i=0;i<E;i++) p[i]=i; num=0; for(int i=0;i<m;i++){ int px=find(edges[i].x); int py=find(edges[i].y); if(px==py) continue; ans[num++]=edges[i]; p[px]=py; T=edges[i].v; if(num==n-1) break; }}int main(){ while(~scanf("%d%d",&n,&m)){ int x,y,v; for(int i=0;i<m;i++) scanf("%d%d%d",&x,&y,&v), edges[i]=Edge(x,y,v); sort(edges,edges+m,cmp); work(); printf("%d\n%d\n",T,num); for(int i=0;i<num;i++) printf("%d %d\n",ans[i].x,ans[i].y); } return 0;}
0 0
- poj1861
- poj1861
- poj1861
- poj1861
- poj1861
- POJ1861
- POJ1861
- POJ1861 Network
- poj1861 - Network
- POJ1861 Network
- poj1861 Network
- poj1861 kruskal
- poj1861 Network
- POJ1861 Network
- POJ1861 kruskal.
- poj1861 Network
- Kruskal POJ1287 POJ1861 POJ2349
- POJ1861——Network
- java web filter总结
- linux open 函数O_DIRECT标志位使用说明
- Spring事务管理的几种实现
- C++虚函数对象模型剖析
- spring mvc常用处理方法的返回方式
- POJ1861
- 起步
- spring mvc 的文件的上传 -- 后续跟进
- 理工科科研结果展示怎样让PPT高大上?
- Mina Logging Filter日志过滤器知识介绍
- android webview 加载重定向页面时点击无法回退,导致重复加载当前页面问题的解决方案
- BZOJ 1794 Ioi2008 Linear Garden
- SAP PS 模块,项目、WBS与网络作业概念
- Atomic Design