题意:给出一组含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点最小生成树)的更多相关文章

  1. ZOJ 1542 POJ 1861 Network 网络 最小生成树,求最长边,Kruskal算法

    题目连接:problemId=542" target="_blank">ZOJ 1542 POJ 1861 Network 网络 Network Time Limi ...

  2. zoj 2966 Build The Electric System 最小生成树

    Escape Time II Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.zju.edu.cn/onlinejudge/showP ...

  3. ZOJ 1586 QS Network Kruskal求最小生成树

    QS Network Sunny Cup 2003 - Preliminary Round April 20th, 12:00 - 17:00 Problem E: QS Network In the ...

  4. ZOJ 1203 Swordfish 旗鱼 最小生成树,Kruskal算法

    主题链接:problemId=203" target="_blank">ZOJ 1203 Swordfish 旗鱼 Swordfish Time Limit: 2 ...

  5. 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 ...

  6. ZOJ 1586 QS Network (最小生成树)

    QS Network Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Submit Sta ...

  7. ZOJ 1584:Sunny Cup 2003 - Preliminary Round(最小生成树&amp;&amp;prim)

    Sunny Cup 2003 - Preliminary Round April 20th, 12:00 - 17:00 Problem E: QS Network In the planet w-5 ...

  8. zoj 3204 最小生成树,输出字典序最小的解

    注意排序即可 #include<cstdio> #include<iostream> #include<algorithm> #include<cstring ...

  9. zoj 3204 Connect them(最小生成树)

    题意:裸最小生成树,主要是要按照字典序. 思路:模板 prim: #include<iostream> #include<stdio.h> #include<string ...

随机推荐

  1. acdream1116 Gao the string!(hash二分 or 后缀数组)

    问题套了一个斐波那契数,归根结底就是要求对于所有后缀s[i...n-1],所有前缀在其中出现的总次数.我一开始做的时候想了好久,后来看了别人的解法才恍然大悟.对于一个后缀来说 s[i...n-1]来说 ...

  2. **关于PHP如何定义一个空对象(REST API如何处理空对象和空数组)

    在写接口的过程当中,手机端有需求说不让返回json数组,要返回一个对象. 那么我们可以怎么做呢? 其实很简单,强制转换即可. 声明空对象: $empty_object=(object)array(); ...

  3. HTTP常用的状态码

    一.200状态码: 成功2××:成功处理了请求的状态码. 1.200 :服务器已成功处理了请求并提供了请求的网页. 2.204:服务器成功处理了请求,但没有返回任何内容. 二.300状态码: 重定向3 ...

  4. js截取指定字节长度的字符串

    默认的截取字符串都是根据字符长度或位置截取的,典型的两个方法是substr和substring. 这样导致的问题是截取同样长度的字符串时,多字节字符(汉字等)和单字节字符(半角英文字母.半角数字)占的 ...

  5. powermockito “mock public 方法内部 Private方法的问题”

    我需要测试的方法是 public 方法: public ResponseResult subscribe(SysSubscription sysSubscription) throws JsonGen ...

  6. CentOS 加载/挂载 U盘

    1.以root用户登陆   先加载USB模块 modprobe usb-storage    用fdisk -l 看看U盘的设备   假如U盘是sda1 2.确定在 目录 /mnt 下建立了 文件夹 ...

  7. 笔者带你剖析淘宝TDDL(TAOBAO DISTRIBUTE DATA LAYER)

    注:本文部分内容引用本人博客http://gao-xianglong.iteye.com/blog/1973591   前言 在开始讲解淘宝的TDDL(Taobao Distribute Data L ...

  8. 关于请求添加HttpRequestHeader

    WebClient w = new WebClient(); w.Headers.Add(HttpRequestHeader.Accept, "application/json") ...

  9. 配置VNCserver

    翻译:yunqing原作者:Thomas Chung出处:http://fedoranews.org/tchung/vnc/ 声明: 版权属原作者Thomas Chung所有,转载请注明出处. 再说一 ...

  10. angular todo

    <!DOCTYPE HTML> <html lang="en-US" ng-app> <head> <meta charset=" ...