ZOJ 3396 Conference Call(3点最小生成树)

题意:给出一组含m个点的无向图,再给出n个点,这n个点分别以一条边连接到这个无向图中的某个点。对于每个询问,求出3点连通的最小代价。有可能3个点是不能互通的。如图,最小代价就是红色的边的权之和。
思路:先对m个点的无向图进行求两两之间最短路径,用floyd。接下来对于每个询问,穷举m个点,求3个点分别到该点的距离之和,求最小即可。
//#include <bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <cstring>
#define INB 0x7f7f7f7f
using namespace std;
const int N=;
int tsf[N]; //电话i接到的中转站
int gph[][]; //邻接矩阵表示图 int nexte[][]; //floyd用的辅助矩阵
int dis[][]; int cal(int a,int b, int c,int m)
{
int small=INB;
for(int k=; k<=m; k++)
{
if(dis[a][k]==INB||dis[b][k]==INB||dis[c][k]==INB)
continue;
if(dis[a][k]+dis[b][k]+dis[c][k]<small)
small=dis[a][k]+dis[b][k]+dis[c][k];
}
if(small>=INB) return ;
return small;
} void floyd(int m)
{
memset(nexte,0x80,sizeof(nexte)); //初始化为负
memset(dis,0x7f,sizeof(dis)); //初始化为无穷大 //初始化 next为可到达的
for(int i=; i<=m; i++)
{
for(int j=; j<=m; j++)
{
if(i==j) dis[i][i]=; //到自己
if(gph[i][j]>) //如果i到j有边
{
nexte[i][j]=j; //这是路径矩阵
dis[i][j]=gph[i][j]; //无向图
}
}
} for(int k=; k<=m; k++)
{
for(int i=; i<=m; i++)
{
for(int j=; j<=m; j++)
{ if(dis[i][k]>=INB || dis[k][j]>=INB) continue; //两段其中一段已经不可达
if(dis[i][j]>dis[i][k]+ dis[k][j]) //此路更短
{
dis[i][j]=dis[i][k]+ dis[k][j];
nexte[i][j]=nexte[i][k]; //修改path
}
}
}
}
} int main()
{
//freopen("e://input.txt", "r", stdin);
int n, m, l, j=;
int a, b, v, q;
while(cin>>n>>m>>l)
{
memset(gph,,sizeof(gph)); //初始化
for(int i=; i<n; i++) //输入电话所连接的中转站
scanf("%d",&tsf[i+]);
for(int i=; i<l; i++) //输入中转站图
{
scanf("%d%d%d",&a,&b,&v);
gph[a][b]=v;
gph[b][a]=v;
}
floyd(m); //佛洛依德开始
scanf("%d",&q);
printf("Case #%d\n",++j);
for(int i=; i<q; i++) //处理每个询问
{
scanf("%d%d%d",&a,&b,&v);
int ans=cal(tsf[a],tsf[b],tsf[v],m);
if(ans)
printf("Line %d: The minimum cost for this line is %d.\n",i+,ans);
else
printf("Line %d: Impossible to connect!\n",i+);
}
}
return ;
}
AC代码
ZOJ 3396 Conference Call(3点最小生成树)的更多相关文章
- ZOJ 1542 POJ 1861 Network 网络 最小生成树,求最长边,Kruskal算法
题目连接:problemId=542" target="_blank">ZOJ 1542 POJ 1861 Network 网络 Network Time Limi ...
- zoj 2966 Build The Electric System 最小生成树
Escape Time II Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.zju.edu.cn/onlinejudge/showP ...
- ZOJ 1586 QS Network Kruskal求最小生成树
QS Network Sunny Cup 2003 - Preliminary Round April 20th, 12:00 - 17:00 Problem E: QS Network In the ...
- ZOJ 1203 Swordfish 旗鱼 最小生成树,Kruskal算法
主题链接:problemId=203" target="_blank">ZOJ 1203 Swordfish 旗鱼 Swordfish Time Limit: 2 ...
- ZOJ - 3204 Connect them 最小生成树
Connect them ZOJ - 3204 You have n computers numbered from 1 to n and you want to connect them to ma ...
- ZOJ 1586 QS Network (最小生成树)
QS Network Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu Submit Sta ...
- ZOJ 1584:Sunny Cup 2003 - Preliminary Round(最小生成树&&prim)
Sunny Cup 2003 - Preliminary Round April 20th, 12:00 - 17:00 Problem E: QS Network In the planet w-5 ...
- zoj 3204 最小生成树,输出字典序最小的解
注意排序即可 #include<cstdio> #include<iostream> #include<algorithm> #include<cstring ...
- zoj 3204 Connect them(最小生成树)
题意:裸最小生成树,主要是要按照字典序. 思路:模板 prim: #include<iostream> #include<stdio.h> #include<string ...
随机推荐
- Tech Stuff - Mobile Browser ID (User-Agent) Strings
Tech Stuff - Mobile Browser ID (User-Agent) Strings The non-mobile stuff is here (hint: you get jerk ...
- 判断一个字符串在至多删除k个字符后是否为回文串
转自: http://www.careercup.com/question?id=6287528252407808 问题描述: A k-palindrome is a string which tra ...
- sream bytes[] img相互转换
/// <summary> /// 将 Stream 转成 byte[] /// </summary> /// <param name="stream" ...
- WCF分布式开发步步为赢(10):请求应答(Request-Reply)、单向操作(One-Way)、回调操作(Call Back).
WCF除了支持经典的请求应答(Request-Reply)模式外,还提供了什么操作调用模式,他们有什么不同以及我们如何在开发中使用这些操作调用模式.今天本节文章里会详细介绍.WCF分布式开发步步为赢( ...
- listview优化 汇总
1,listview加载性能优化ViewHolder 转自: http://blog.csdn.net/jacman/article/details/7087995 在android开发中Listvi ...
- hadoop jobhistory解析工具汇总
1. White Elephant是LinkedIn开源的一套Hadoop 作业日志收集器和展示器,使用mapreduce作业解析jobhistory日志,得到每个用户使用的资源情况,并通过网页展示. ...
- AngularJS学习笔记1——什么是AngularJS?
Angular JS是一个由Google维护的开源的Javascript框架,主要作者为: Misko Hevery(angular JS之父, Sr. Computer Scientist at G ...
- Jenkins 构建JavaHelloWorld
原文:http://www.cnblogs.com/itech/archive/2011/11/03/2234662.html 注意:我们知道Jenkins通过master/slave来支持分布式的j ...
- Android 获取屏幕高度,宽度,状态栏高度
背景介绍: 到目前为止,android已经从1.5发展到目前的3.2,我们在写一个应用的时候,最常用到得就是获取屏幕高度,宽度,以及status bar的高度. 然而android系统变化太快了,从开 ...
- Spring boot 整合jsp和tiles模板
首先贴上我的pox.xml文件,有详细的支持注释说明 <?xml version="1.0" encoding="UTF-8"?> <proj ...