codevs 1700 MST和树的重心
来源:互联网 发布:手机淘宝装修效果图 编辑:程序博客网 时间:2024/05/19 11:47
#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#include<cstdlib>#include<queue>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fod(i,a,b) for(int i=a;i>=b;i--)using namespace std;typedef long long ll;const int MAXN=100000;const int MAXM=200000;const int INF=(1<<30);ll dis[MAXN],mini=-1,re;int n,m,len=0,last[MAXN],fa[MAXN],pre[MAXN];int cur,pos;bool vis[MAXN];struct edge{ int u,v,w; friend bool operator < (const edge &x,const edge &y){ return x.w<y.w; }}e[MAXM];int Find(int x){ return x==fa[x]?x:fa[x]=Find(fa[x]);}struct Edge{ int next,to,val; Edge(int n=0,int v=0,int w=0):next(n),to(v),val(w){}}E[MAXN];void add(int from,int to,int val){E[++len]=Edge(last[from],to,val);last[from]=len;E[++len]=Edge(last[to],from,val);last[to]=len;}void kruskal(){ ll ans=0; fo(i,1,n) fa[i]=i; sort(e+1,e+1+m); fo(i,1,m){ int x=Find(e[i].u),y=Find(e[i].v); if(x==y) continue; else{ ans+=e[i].w; add(e[i].u,e[i].v,e[i].w); fa[x]=y; } } printf("%lld\n",ans);}void dfs(int x){ for(int i=last[x];i;i=E[i].next){ int id=E[i].to; if(!vis[id]){ pre[id]=x; dis[id]=dis[x]+E[i].val; vis[id]=true; dfs(id); vis[id]=false; } }}void search(int x){ if(pre[x]) search(pre[x]); re=min(re,max(dis[x],mini-dis[x]));}int main(){ memset(vis,0,sizeof(vis)); scanf("%d%d",&n,&m); fo(i,1,m) { scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w); } kruskal(); memset(vis,0,sizeof(vis)); memset(dis,0,sizeof(dis)); vis[1]=true; dfs(1); fo(i,1,n){ if(dis[i]>mini) mini=dis[cur=i]; } vis[1]=false; memset(pre,0,sizeof(pre)); memset(dis,0,sizeof(dis)); vis[cur]=true; dfs(cur); mini=-1; fo(i,1,n){ if(dis[i]>mini) mini=dis[pos=i]; } re=mini; search(pos); printf("%lld",re); return 0;}
0 0
- codevs 1700 MST和树的重心
- 【codevs1700】施工方案第二季 MST+树的重心
- [codevs 3639] 树的中心---树形DP(树的重心)
- 树的直径和重心
- UVALive 5026 (树的重心和直径)
- codevs 3315 时空跳跃者的魔法 MST
- 树的重心
- poj1655树的重心
- 求树的重心
- 树的重心
- 树的重心
- 树的重心、直径
- poj3107 树的重心
- 树的重心
- 树的重心
- 树的重心
- 树的重心
- 树的重心
- 【Python】内建的isinstance函数可以判断一个变量是不是字符串
- Linux的ps命令
- Java爬虫,信息抓取的实现
- 关于cmd命令行中的E:/dir/javac/java命令
- JVM学习(2)——技术文章里常说的堆,栈,堆栈到底是什么,从os的角度总结
- codevs 1700 MST和树的重心
- Zookeeper源码分析之请求处理链
- POJ 3253 Fence Repair (哈夫曼)
- Linux(6) ssh:远程控制
- UVa 725 Division 【暴力入门】
- Java总结篇系列:Java泛型
- Cocos 资料大全 下载链接地址
- Android内存泄漏完整解决方案
- 笔记——Java面向对象之多态