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 ...
随机推荐
- input:text 的value 和 attribute('value') 不是一回事
如题,input:text 当手工输入字符改变其值时,两者就不一样了. 要获得手工输入,不要用attribute('value'), 直接使用value: function getbyid(id){ ...
- iOS多线程的初步研究(十)-- dispatch同步
GCD提供两种方式支持dispatch队列同步,即dispatch组和信号量. 一.dispatch组(dispatch group) 1. 创建dispatch组 dispatch_group_t ...
- android 启动adb
1.命令行进入 sdk/platform-tools 2.执行命令 adb kill-server 3.执行命令 adb start-server
- (转)Android: NDK编程入门笔记
转自: http://www.cnblogs.com/hibraincol/archive/2011/05/30/2063847.html 为何要用到NDK? 概括来说主要分为以下几种情况: 1. 代 ...
- (转)Android之ListView原理学习与优化总结
转自: http://jishu.zol.com.cn/12893.html 在整理前几篇文章的时候有朋友提出写一下ListView的性能优化方面的东西,这个问题也是小马在面试过程中被别人问到的….. ...
- 经典SQL查询语句大全
一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数 ...
- Android Non-UI to UI Thread Communications(Part 1 of 5)
original:http://www.intertech.com/Blog/android-non-ui-to-ui-thread-communications-part-1-of-5/ ANDRO ...
- 安卓RadioButton的使用
学习目的: 1.掌握在Android中如何建立RadioGroup和RadioButton 2.掌握RadioGroup的常用属性 3.理解RadioButton和CheckBox的区别 4.掌握Ra ...
- chrome开发配置(四)生成项目及配置库引用
1.运行gclient runhooks --force .会重新下载个python 2.7版本的,并且下载好几个文件,大概1个多小时:
- SQL SERVER ->> Data Compression
最近做了一个关于数据压缩的项目,要把整个SQL SERVER服务器下所有的表对象要改成页压缩.于是趁此机会了解了一下SQL SERVER下压缩技术. 这篇文章几乎就是完全指导手册了 https://t ...