poj 3164 Command Network
最小树形图,,不熟练啊,写错几个地方无限TLE
#include<stdio.h>
#include<string.h>
#include<math.h>
#define N 101
#define inf 0x3fffffff
int flag[N],id[N],pre[N],n,m;
double ms[N];
struct op
{
int x,y;
double w;
}e[N*N];
struct tp
{
double x,y;
}p[N];
double dis(struct tp a,struct tp b)
{
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
double liuzhu(int root)
{
int i,j,nm=n+1;
double sum=0;
while(1)
{
memset(flag,-1,sizeof(flag));
memset(id,-1,sizeof(id));
memset(pre,-1,sizeof(pre));
for(i=1;i<nm;i++)
ms[i]=inf;
for(i=0;i<m;i++)
{
int x=e[i].x,y=e[i].y;
double w=e[i].w;
if(y!=x&&ms[y]>w)
{
ms[y]=w;
pre[y]=x;
}
}
ms[root]=0;pre[root]=root;
for(i=1;i<nm;i++)
{
if(ms[i]==inf)return -1.0;
sum+=ms[i];
}
int res=1;
for(i=1;i<nm;i++)
{
if(flag[i]==-1)
{
int u=i;
while(flag[u]==-1)
{
flag[u]=i;
u=pre[u];
}
if(u==root||flag[u]!=i)continue;
for(int t=pre[u];t!=u;t=pre[t])
id[t]=res;
id[u]=res++;
}
}
if(res==1)break;
for(i=1;i<nm;i++)
if(id[i]==-1)id[i]=res++;
for(i=0;i<m;i++)
{
e[i].w-=ms[e[i].y];
e[i].x=id[e[i].x];
e[i].y=id[e[i].y];
}
root=id[root];
nm=res;
}
return sum;
}
int main()
{
int i,x,a,b,j;
double sum;
while(scanf("%d%d",&n,&m)!=-1)
{
for(i=1;i<=n;i++)
scanf("%lf%lf",&p[i].x,&p[i].y);
for(i=0;i<m;i++)
{
scanf("%d%d",&a,&b);
e[i].x=a;
e[i].y=b;
e[i].w=dis(p[a],p[b]);
}
sum=liuzhu(1);
if(sum<0)printf("poor snoopy\n");
else printf("%.2f\n",sum);
}
return 0;
}
poj 3164 Command Network相关推荐
- POJ 3164 Command Network (最小树形图)
Command Network Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 10136 Accepted: 2946 ...
- POJ 3164 Command Network
Description After a long lasting war on words, a war on arms finally breaks out between littleken's ...
- POJ 3164 Command Network(朱刘算法)
Command Network Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 21481 Accepted: 6117 ...
- POj 3164 Command Network最小树形图 模板题 朱刘算法
Command Network After a long lasting war on words, a war on arms finally breaks out between littleke ...
- POJ 3164 Command Network (最小树形图)
[题目链接]http://poj.org/problem?id=3164 [解题思路]百度百科:最小树形图 ]里面有详细的解释,而Notonlysucess有精简的模板,下文有对其模板的一点解释,前提 ...
- [POJ 3164]Command Network(最小树形图,朱刘算法)
文章目录 title solution code title solution 读完翻译后,很明显就是个朱刘算法的板子题 最小树形图,就是给出一个带权有向图 从中指定一个特殊的结点 root 求一棵以 ...
- Command NetWork(POJ-3164)
Problem Description After a long lasting war on words, a war on arms finally breaks out between litt ...
- POJ 2236 Wireless Network 并查集
Wireless Network 并查集 Crawling in process... Crawling failed Time Limit:10000MS Memory Limit:6553 ...
- Linux command | network
持续更新中- (1) ip The ip command can show address information, manipulate routing, plus display network ...
最新文章
- matlab 图像分割 提取人像_几种典型的图像处理技术(分类 目标提取 目标跟踪 语义分割 实例分割)...
- 哈利波特 pdf_干货!哈利波特英文原版pdf免费领,(含音频)词汇量大于新概念!...
- 《软件加密与解密》第三版学习日志一
- The superclass javax.servlet.http.HttpServlet was not found 问题解决
- Spring控制反转(依赖注入)的最简单说明
- 退市再上市,泡泡玛特的”盲盒泡泡”这次能吹多大?
- nssl1232-函数【数论,欧拉函数,莫比乌斯反演】
- 《王者荣耀》回应故障:3个工作日内补发排位赛星积分丢失
- java抽象机制_Java很好学:接口+抽象类+事件监听机制
- visual studio 中将选中代码相同的代码的颜色设置,修改高亮颜色
- Win10系统利用注册表完美设置桌面图标的技巧
- 6.郝斌C语言笔记——流程控制
- matlab怎么算不定积分,matlab计算不定积分
- Re32:读论文 Summarizing Legal Regulatory Documents using Transformers
- 中学生应具备的良好的学习习惯
- 怎么编辑PDF文件?分享三种好用的编辑方法
- 手机短号码(mobile)C++
- 如何在未越狱的iOS 设备上安装 ipa
- 2018秋招校招济南联通软件研究院笔试题目
- U盘重新量产,PE与ubuntu共存