【最短路】变形-- nyoj 1248 海岛争霸、poj 1797 Heavy Transportation
来源:互联网 发布:邮箱的正则表达式的js 编辑:程序博客网 时间:2024/05/18 02:47
nyoj 1248:
题意:好像是中文;
思路:每个询问给出a、b,要求找到a-b的哪条路上的最大值是最小的,输出这个最小值;
代码:
#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>using namespace std;const int maxn=110;const int inf=0x3f3f3f3f;int cost[maxn][maxn];int dis[maxn];int vis[maxn];int N,M;int dijk(int s,int e){ memset(vis,false,sizeof(vis)); memset(dis,0x3f,sizeof(dis)); vis[s]=1; for(int i=1; i<=N; i++) dis[i]=cost[s][i]; for(int i=1; i<N; i++) { int minn=inf; for(int j=1; j<=N; j++) { if(!vis[j]&&dis[j]<minn) { minn=dis[j]; s=j; } } vis[s]=1; for(int j=1; j<=N; j++) { dis[j]=min(max(dis[s],cost[s][j]),dis[j]); } } if(dis[e]!=inf) printf("%d\n",dis[e]); else printf("-1\n");}int main(){ scanf("%d%d",&N,&M); memset(cost,0x3f,sizeof(cost)); for(int i=0; i<=N; i++) cost[i][i]=inf; for(int i=0; i<M; i++) { int u,v,w; scanf("%d%d%d",&u,&v,&w); cost[u][v]=cost[v][u]=w; } int n; scanf("%d",&n); while(n--) { int a,b; scanf("%d%d",&a,&b); dijk(a,b);// printf("%d\n",b); } return 0;}
poj 1797:
题意:解释以下样例:1-3有两条路,(1):1-2-3 最大承重为3;(2):1-3最大承重为4;所以输出1-3的最大承重为4;
思路:一个简单的dijk变形;但是我写了一个多小时,这道题要求的是1-n的那条路的最小值是最大的;那么求最大值就要給cost[]赋初值为最小!
代码:
#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>using namespace std;const int maxn=1100;const int inf=0x3f3f3f3f;int cost[maxn][maxn];int dis[maxn];int vis[maxn];int N,M;int dijk(int s){ memset(vis,false,sizeof(vis)); vis[s]=1; for(int i=1; i<=N; i++) dis[i]=cost[s][i]; for(int i=1; i<N; i++) { int maxx=0; for(int j=1; j<=N; j++) { if(!vis[j]&&dis[j]>maxx) { maxx=dis[j]; s=j; } } vis[s]=1; for(int j=1; j<=N; j++) { if(!vis[j]) { dis[j]=max(min(dis[s],cost[s][j]),dis[j]); } } } return dis[N];}int main(){ int T; scanf("%d",&T); int t=1; while(t) { scanf("%d%d",&N,&M); memset(cost,-0x3f,sizeof(cost)); //注意初始化,要求承重的最大值,所以赋值cost数组为最小; for(int i=0; i<=N; i++) cost[i][i]=0; for(int i=0; i<M; i++) { int u,v,w; scanf("%d%d%d",&u,&v,&w); cost[u][v]=cost[v][u]=w; } int ans=dijk(1); printf("Scenario #%d:\n%d\n",t,ans); if(t!=T) printf("\n"); else break; t++; } return 0;}
0 0
- 【最短路】变形-- nyoj 1248 海岛争霸、poj 1797 Heavy Transportation
- poj 1797 Heavy Transportation (最短路变形)
- POJ 1797 Heavy Transportation 最短路变形
- Poj 1797 Heavy Transportation ( 最短路变形
- POJ 1797 Heavy Transportation Dijstr最短路变形
- POJ 1797 Heavy Transportation【Dijkstra最短路变形】
- 【POJ】1797 Heavy Transportation 二分+最短路
- poj 1797 Heavy transportation 最短路
- POJ 1797 Heavy Transportation (最短路)
- poj 1797 Heavy Transportation 最短路 dijkstra
- poj-1797-Heavy Transportation [最短路][Dijkstra]
- POJ 1797 Heavy Transportation&&POJ 2253 Frogger 最短路 dijkstra变形
- POJ-1797Heavy Transportation,最短路变形,用dijkstra稍加修改就可以了;
- poj1797 Heavy Transportation(最短路变形)
- poj1797 Heavy Transportation(最短路变形)
- Heavy Transportation(最短路变形)
- POJ1797---Heavy Transportation(最短路变形)
- (POJ 1797)Heavy Transportation 最大生成树|最短路变形 (理解最短路核心思想好题)
- CentOS Linux解决Device eth0 does not seem to be present
- Task Schedule HDU
- Turtle 库绘制一棵西兰花
- Codeforces 803E Roma and Poker【Dp+记录路径】
- Java IO流之转换流
- 【最短路】变形-- nyoj 1248 海岛争霸、poj 1797 Heavy Transportation
- Understanding JVM Internals
- 数据结构学习笔记——00 C++程序设计基础
- JPA OneToOne双向关系
- Codeforces Round #401 (Div. 2)
- xgboost实现
- Nginx配置基础-概述
- JMeter学习笔记9-Aggregate Report介绍
- 4月29日