UVA-11183 Teen Girl Squad (最小树形图、朱刘算法模板)
题目大意:给一张无向图,求出最小树形图。
题目分析:套朱-刘算法模板就行了。。。
代码如下:
# include<iostream>
# include<cstdio>
# include<cstring>
# include<algorithm>
using namespace std;
# define LL long long
# define REP(i,s,n) for(int i=s;i<n;++i)
# define CL(a,b) memset(a,b,sizeof(a))
# define CLL(a,b,n) fill(a,a+n,b) const int N=1005;
const int INF=1<<30;
struct Edge
{
int fr,to,w;
};
Edge e[N*40];
int vis[N],ID[N],pre[N],in[N],n,m; int zhu_liu(int root,int nv,int ne)
{
int res=0;
while(1)
{
CLL(in,INF,nv);
REP(i,0,ne) if(e[i].fr!=e[i].to&&in[e[i].to]>e[i].w){
in[e[i].to]=e[i].w;
pre[e[i].to]=e[i].fr;
}
in[root]=0;
REP(i,0,nv) if(in[i]==INF) return -1;
int nodeCnt=0;
CL(ID,-1);
CL(vis,-1);
REP(i,0,nv){
res+=in[i];
int v=i;
while(vis[v]!=i&&ID[v]==-1&&v!=root){
vis[v]=i;
v=pre[v];
}
if(v!=root&&ID[v]==-1){
for(int u=pre[v];u!=v;u=pre[u])
ID[u]=nodeCnt;
ID[v]=nodeCnt++;
}
}
if(nodeCnt==0) break;
REP(i,0,nv) if(ID[i]==-1) ID[i]=nodeCnt++;
REP(i,0,ne){
int v=e[i].to;
e[i].fr=ID[e[i].fr];
e[i].to=ID[e[i].to];
if(e[i].fr!=e[i].to)
e[i].w-=in[v];
}
nv=nodeCnt;
root=ID[root];
}
return res;
} int main()
{
int T,cas=0;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
REP(i,0,m)
{
scanf("%d%d%d",&e[i].fr,&e[i].to,&e[i].w);
}
int ans=zhu_liu(0,n,m);
printf("Case #%d: ",++cas);
if(ans<0)
printf("Possums!\n");
else
printf("%d\n",ans);
}
return 0;
}
UVA-11183 Teen Girl Squad (最小树形图、朱刘算法模板)的更多相关文章
- poj3164(最小树形图&朱刘算法模板)
		
题目链接:http://poj.org/problem?id=3164 题意:第一行为n, m,接下来n行为n个点的二维坐标, 再接下来m行每行输入两个数u, v,表点u到点v是单向可达的,求这个有向 ...
 - UVA 11183  Teen Girl Squad  最小树形图
		
最小树形图模板题 #include <iostream> #include <algorithm> #include <cstdio> #include <c ...
 - 最小树形图——朱刘算法(Edmonds)
		
定义:一个有向图,存在从某个点为根的,可以到达所有点的一个最小生成树,则它就是最小树形图. 朱刘算法实现过程: [在选出入边集后(看步骤1),若有向图中不存在有向环,说明该图就是最小树形图] 1,选入 ...
 - POJ    3164       Command Network    ( 最小树形图   朱刘算法)
		
题目链接 Description After a long lasting war on words, a war on arms finally breaks out between littlek ...
 - POJ 3164 Command Network 最小树形图 朱刘算法
		
=============== 分割线之下摘自Sasuke_SCUT的blog============= 最 小树形图,就是给有向带权图中指定一个特殊的点root,求一棵以root为根的有向生成树T, ...
 - 最小树形图--朱刘算法([JSOI2008]小店购物)
		
题面 luogu Sol 首先设一个 \(0\) 号点,向所有点连边,表示初始价值 显然这个图的一个 \(0\) 为根的最小有向生成树的边权和就是每个买一次的最小价值 再买就一定能优惠(包含 \(0\ ...
 - 洛谷P4716 【模板】最小树形图(朱刘算法)
		
题意 题目链接 Sol 朱刘算法?感觉又是一种神仙贪心算法 大概就是每次贪心的用每个点边权最小的入边更新答案,如果不行的话就缩起来找其他的边 不详细说了,丢链接走人.. #include<bit ...
 - POJ - 3164-Command Network 最小树形图——朱刘算法
		
POJ - 3164 题意: 一个有向图,存在从某个点为根的,可以到达所有点的一个最小生成树,则它就是最小树形图. 题目就是求这个最小的树形图. 参考资料:https://blog.csdn.net/ ...
 - bzoj 4349 最小树形图——朱刘算法
		
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4349. 学习博客:http://www.cnblogs.com/xzxl/p/7243466 ...
 
随机推荐
- HOJ 2226&POJ2688 Cleaning Robot(BFS+TSP(状态压缩DP))
			
Cleaning Robot Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4264 Accepted: 1713 Descri ...
 - python3.7.2 ssl版本过低导致pip无法使用的问题
			
环境:系统是centos6.6,python:python3.7.2 问题:安装好python3.pip后,在通过pip install xx 安装模块时,发现无法安装的问题,提示版本太低,系统默认的 ...
 - 解决li中文字行高对齐
			
<div class="A_content_1"> <li>座右铭: <input class="A_ct1" type=&quo ...
 - django-mvc
			
而对于真实开发中的python web程序来说,一般会分为两部分:服务器程序和应用程序.服务器程序负责对socket服务器进行封装,并在请求到来时,对请求的各种数据进行整理.应用程序则负责具体的逻辑处 ...
 - 从LayoutInflater分析XML布局解析成View的树形结构的过程
			
上一篇博客分析了XML布局怎么载入到Activity上.不了解的能够參考 从setContentView方法分析Android载入布局流程 上一篇博客仅仅是分析了怎么讲XML布局加入到 Activit ...
 - 如何编写一个python项目
			
https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001397616003925a ...
 - sshd:root@notty解决方法
			
sshd:root@notty解决方法 [复制链接]--http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=2050551 cat /e ...
 - [WorldWind学习]19.WebDownload
			
using System; using System.Diagnostics; using System.Globalization; using System.Net; using System.I ...
 - 4.6 Routing -- Rendering A Tempalte
			
1. route handler一个重要的任务就是渲染合适的模板到屏幕. 2. 默认的,一个route handler将会呈现模板到最近的父模板. app/router.js Router.map(f ...
 - pyDay8
			
内容来自廖雪峰的官方网站. List Comprehensions 1 >>> list(range(1, 3)) [1, 2] 2 >>> L = [] > ...