Audiophobia UVA
来源:互联网 发布:搜索文件软件 编辑:程序博客网 时间:2024/06/06 10:37
题目链接:
Audiophobia UVA - 10048
题目大意:
给一个无向图,有 c<=100 个点,s<=1000 条边,q<=10000 个询问,求给定两点之间的路径上的最大边权值最小。
思路:
规模较小,据说可以用 MST 和 LCA做。
直接用Floyd做即可。
需要注意的是 d数组的初始化。按照一般的做即可,即 d[i][i]=0 ,不连接的记为 inf
注意d[i][j]=min(d[i][j],max(d[i][k],d[k][j]));
k是i->j上的一个点,两条路上选取较大值再比较d[i][j]取较小值。
具体实现:
#include <bits/stdc++.h>using namespace std;typedef long long ll;typedef pair <int,int> pii;#define mem(s,t) memset(s,t,sizeof(s))#define D(v) cout<<#v<<" "<<v<<endl#define inf 0x3f3f3f3f#define pb push_back//#define LOCALconst int mod=1e9+7;const int MAXN =110;int c,s,q;int d[MAXN][MAXN],to[MAXN][MAXN];int main() {#ifdef LOCAL freopen("in.txt","r",stdin); freopen("out.txt","w",stdout);#endif int kase=0; while(~scanf("%d%d%d",&c,&s,&q) && c+s+q){ for(int i=1;i<=c;i++) for(int j=1;j<=c;j++) d[i][j]=(i==j)?0:inf; for(int i=0;i<s;i++){ int x,y,w; scanf("%d%d%d",&x,&y,&w); d[x][y]=d[y][x]=w; } for(int k=1;k<=c;k++){ for(int i=1;i<=c;i++){ for(int j=1;j<=c;j++){ d[i][j]=min(d[i][j],max(d[i][k],d[k][j])); } } } if(kase) puts(""); printf("Case #%d\n",++kase); for(int i=0;i<q;i++){ int x,y; scanf("%d%d",&x,&y); if(d[x][y]!=inf){ printf("%d\n",d[x][y]); }else puts("no path"); } } return 0;}
阅读全文
0 0
- Audiophobia UVA
- Audiophobia UVA
- UVA 10048 - Audiophobia
- uva 10048 - Audiophobia
- UVA 10048 - Audiophobia
- UVa 10048 - Audiophobia
- Uva 10048 - Audiophobia
- UVa 10048: Audiophobia
- Uva - 10048 - Audiophobia(Floyd)
- UVa:10048 Audiophobia
- UVA - 10048 Audiophobia
- UVA 10048 - Audiophobia(floyd)
- UVa 10048 - Audiophobia
- Audiophobia - UVa 10048 Floyd
- UVA - 10048 Audiophobia
- uva 10048 - Audiophobia
- UVA 10048 - Audiophobia
- Uva 10048 Audiophobia 【floyd】
- Java基础之异常
- 2017/11/21
- ACSII码画图
- 【MongoDB】MongoDB基本入门01
- Spark参数
- Audiophobia UVA
- Servlet处理表单数据(成长记录)
- 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
- vue学习-过滤器
- input file图片上传并回显
- 如何在VS2013+QT5.3环境下使用自定义信号与槽函数
- 个人总结42
- 链队列(C语言实现)学习记录
- 设计模式--简单工厂