传送门

题意

输入一个C个点S条边的无向带权图,边权表示该路径上的噪声值。输入一些询问,每次询问两个点,输出这两点间最大噪声值最小的路径。

思路

最简单的方法就是Floyd算法。本来是求长度的,现在求最大噪声值最小的路径,稍微改一下就好了。

d[i][j]=min(d[i][j],max(d[i][k],d[k][j]))

其次,也可以用Dijkstra算法来计算。

代码

 #include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
using namespace std; #define INF 1000001 int n, m, t;
int s, e; int map[][]; int main()
{
//freopen("D:\\txt.txt", "r", stdin);
int kase = ;
int a, b, w;
while (scanf("%d%d%d", &n, &m,&t))
{
if (m == && n == && t == ) break;
if (kase > ) printf("\n");
printf("Case #%d\n", kase++); for (int i = ; i <= n; i++)
{
map[i][i] = INF;
for (int j = i + ; j <= n; j++)
map[i][j] = map[j][i] = INF;
} for (int i = ; i < m; i++)
{
scanf("%d%d%d", &a, &b, &w);
map[a][b] = map[b][a] = w;
} for (int k = ; k <= n;k++)
for (int i = ; i <= n;i++)
for (int j = ; j <= n; j++)
map[i][j] = min(map[i][j], max(map[i][k], map[k][j])); for (int i = ; i < t; i++)
{
scanf("%d%d", &s, &e);
if (map[s][e] == INF) printf("no path\n");
else printf("%d\n", map[s][e]);
}
}
return ;
}
 #include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
#include<queue>
using namespace std;
const int inf = 0x3f3f3f3f;
typedef pair<int, int> pii; int c, s, q;
vector<pii> g[];
bool vis[];
int d[][]; struct HeapNode{
int d, u;
bool operator < (const HeapNode& rhs) const{
return d > rhs.d;
}
}; void dijkstra(int s){
memset(vis, , sizeof(vis));
for(int i=; i<=c; i++) d[s][i] = inf;
d[s][s] = ;
priority_queue<HeapNode> Q;
Q.push((HeapNode){, s});
while(!Q.empty()){
HeapNode x = Q.top(); Q.pop();
int u = x.u;
if(vis[u]) continue;
vis[u] = true;
for(int i=; i<g[u].size(); i++){
int v = g[u][i].first;
if(d[s][v] > max(d[s][u], g[u][i].second)){
d[s][v] = max(d[s][u], g[u][i].second);
Q.push((HeapNode){d[s][v], v});
}
}
}
} int main(){
//freopen("in.txt", "r", stdin);
int cas = ;
while(~scanf("%d%d%d", &c, &s, &q) && c && s && q){
for(int i=; i<=c; i++) g[i].clear();
if(cas > ) puts("");
printf("Case #%d\n", cas++);
for(int i=; i<s; i++){
int u, v, w;
scanf("%d%d%d", &u, &v, &w);
g[u].push_back(make_pair(v, w));
g[v].push_back(make_pair(u, w));
}
for(int i=; i<=c; i++){
dijkstra(i);
} while(q--){
int st, ed;
scanf("%d%d", &st, &ed);
if(d[st][ed] == inf) puts("no path");
else printf("%d\n", d[st][ed]);
}
}
return ;
}

UVa 10048 噪音恐惧症(Floyd)的更多相关文章

  1. 【Floyd】噪音恐惧症

    [UVA10048]噪音恐惧症 题面略 试题分析:直接Floyd一下维护u到v的路径最大值最小就可以了,1A 代码: #include<iostream> #include<cstr ...

  2. Uva(10048),最短路Floyd

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  3. 洛谷 题解 UVA10048 【噪音恐惧症 Audiophobia】

    [题意] 输入一个\(C\)个点\(S\)条边 \((C<=100)\) \((S<=1000)\)的无向带权图,边权表示该路径上的噪声值.当噪声太大时,耳膜可能会收到损伤,所以当你从某点 ...

  4. 如何克服社交恐惧症?zz

    zhang Bavol 清华大学核能与新能源技术研究院——核科学与技术/电子爱好者     你说的这个恐惧症我也有一点点,不过现在我是只对那种不是很熟悉的七姑八婆之类的亲戚才会有这种憋屈感觉,对朋友和 ...

  5. 选择恐惧症的福音!教你认清MVC,MVP和MVVM(转:示例挺好,不太赞同画图)

    转自:http://zjutkz.net/2016/04/13/%E9%80%89%E6%8B%A9%E6%81%90%E6%83%A7%E7%97%87%E7%9A%84%E7%A6%8F%E9%9 ...

  6. UVA - 10048 Audiophobia (Floyd应用)

    题意:求出两点之间所有路径最大权值的最小值. 思路:转变一下Floyd的形式即可: 注意:注意初始化问题,还有UVA奇葩的输出形式. 代码如下: #include<iostream> #i ...

  7. UVA - 10048 Audiophobia Floyd

    思路:套用Floyd算法思想,d(i, j) = min(d(i,j), max(d(i,k), d(k,j)),就能很方便求得任意两点之间的最小噪音路径. AC代码 #include <cst ...

  8. UVa 10048 - Audiophobia(Floyd变形)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  9. 【Audiophobia UVA - 10048 】【Floyd算法】

    题目大意:从a城市到b城市的路径中,尽可能让一路上的最大噪音最小. 题目思路:设d [ i ][ j ]表示 i 到 j 的最大噪音的最小值. 那么d [ i ][ j ] = min( d[ i ] ...

随机推荐

  1. spring boot 中用@value给static变量赋值

    需求:改写一个JedisUtils,工具类,所以最好用静态方法和变量. @value("${redis.host}") private static String redisHos ...

  2. 使用masory

    动态更新约束的时候老是提示有多余的约束,我使用update_contraits  make_contraits  都不能解决,后来使用了remake_contraits才消除了告警. view pro ...

  3. toFixed()与toPrecision()

    toFixed(n): 返回一个字符串,代表一个以定点表示法表示的数字. n在0~20之间 var g=1.023; var f=g.toFixed(2); f的值为:1.02,     typeof ...

  4. jquery控制css的display属性(显示与隐藏)

    jquery控制div的显示与隐藏,很方便的. 例如: $("#id").show()表示display:block, $("#id").hide()表示dis ...

  5. #C++初学记录(sort函数)

    sort函数 前言:当进行贪心算法的学习时,需要用到sort函数,因为初学c++汇编语言,sort的具体用法没有深入学习,所以这里进行sort学习记录并只有基础用法并借用贪心算法题目的代码. 百度百科 ...

  6. cmd重启服务器,有时不想去机房,并且远程桌面连接登录不上了

    有时不想去机房,并且远程桌面连接登录不上了,需要远程重启服务器的,这时可以使用命令行方式远程重启.在cmd命令行状态下输入:shutdown -r -m \\192.168.1.10 -t 0 -f ...

  7. 实现kylin定时跑当天的任务

    说明: 每天自动构建cube,动态在superset里面查看每天曲线变化图 #! /bin/bash ##cubeName cube的名称 ##endTime 执行build cube的结束时间 (命 ...

  8. sublime工具安装完成后使用Emmet加快前端页面的开发速度

    sublime的安装这里就不介绍了,很多人看到有些人在使用sublime时使用了一些快捷键非常快速的搭建一个简单的html,简单的结构就打起来了.不需要手动一个标签一个标签写. 其实是他们安装了Emm ...

  9. 将图片文件转化为字节数组字符串,并对其进行Base64编码处理,以及对字节数组字符串进行Base64解码并生成图片

    实际开发中涉及图片上传并且量比较大的时候一般处理方式有三种 1.直接保存到项目中 最老土直接方法,也是最不适用的方法,量大对后期部署很不方便 2.直接保存到指定路径的服务器上.需要时候在获取,这种方式 ...

  10. 华为C/C++笔试题&答案

    1.static有什么用途?(请至少说明两种) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变. 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问 ...