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 ...
随机推荐
- HDU 2571 命运 动态规划
命运 http://acm.hdu.edu.cn/showproblem.php?pid=2571 Problem Description 穿过幽谷意味着离大魔王lemon已经无限接近了!可谁能想到, ...
- android 四大组件Broadcast Receiver
本文介绍Broadcast Receiver,包括几部分内容:Broadcast Receiver概述及实例.自定义Broadcast Receiver.Broadcast Receiver的实现细节 ...
- JAVA类型信息——Class对象
JAVA类型信息——Class对象 一.RTTI概要 1.类型信息RTTI :即对象和类的信息,例如类的名字.继承的基类.实现的接口等. 2.类型信息的作用:程序员可以在程序运行时发现和使用类型信息. ...
- oracle创建表空间,创建用户(转)
//创建临时表空间 create temporary tablespace test_temp tempfile 'E:\oracle\product\10.2.0\oradata\testserve ...
- Good Bye 2015 C. New Year and Domino 二维前缀
C. New Year and Domino They say "years are like dominoes, tumbling one after the other". ...
- FastJson与Gson小测试
最近用到Json来传输数据,找到两个比较简单的工具 Gson 和 FastJson随便测试一下两个工具的效率~ 1 package com.json.fast; import java.util.Ar ...
- mysql 连接数的最大数
mysql默认最大连接数是100,增加加默认MYSQL连接数的方法有两个 方法一:进入MYSQL安装目录 打开MYSQL配置文件 my.ini(windows) 或 my.cnf(linux环境)查找 ...
- servlet学习笔记一
Servlet一.基本概念 我们的程序根据是否需要访问网络,可分为网络程序和非网络程序.而 网络程序又分为B/S结构和C/S结构. 什么是C/S?即客户端(Client)/服务器(Server)模式. ...
- CentOS安装Chrome
问题 在CentOS安装Chrome会遇到 libstdc++.so.6(GLIBCXX_3.4.15)(64bit) 依赖失败的问题, 即使下载了最新的libstdc++.so.6(包含GLIBCX ...
- VS2010/MFC编程入门之四(MFC应用程序框架分析)
VS2010/MFC编程入门之四(MFC应用程序框架分析)-软件开发-鸡啄米 http://www.jizhuomi.com/software/145.html 上一讲鸡啄米讲的是VS2010应用 ...