题目大意:

给你以T, 代表T组测试数据,一个n代表有n个点, 一个m代表有m条边, 每条边有三个参数,a,b,c表示从a到b的这条路上最大的承受重量是c,

让你找出一条线路,要求出在这条线路上的最小承重, 在所有其他线路最大。

题目分析:

这里只要将spfa进行一下变形就可以解决这问题了。

首先 我们的dist数组,起点位置要初始化为 INF, 其他位置初始化为 0

然后我们更新 dist 数组, 结果输出 dist[n]就行了

为什么这样写: 因为我们每次要找 所有路径中的最大边的最小一个, 说的可能有写绕口

递推式是: dist[e] = max(dist[e], min(dist[s], G[s][i]) );

下面是代码:

 #include <iostream>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
#define INF 0xfffffff
#define maxn 1050 struct Edge
{
int e;
long long w;
};
vector<Edge> G[maxn];
long long dist[maxn];
bool vis[maxn];
int m, n;
long long Spfa()
{
Edge P, Pn;
P.e = , P.w = ;
queue <Edge> Q;
Q.push(P); while( !Q.empty() )
{
P = Q.front();
Q.pop();
vis[P.e] = false;
int len = G[P.e].size(); for(int i=; i<len; i++)
{
Pn = G[P.e][i]; if(dist[Pn.e] < min(dist[P.e],Pn.w) )
{
dist[Pn.e] = min(dist[P.e],Pn.w); if(!vis[Pn.e])
{
vis[Pn.e] = true;
Q.push(Pn);
}
}
}
}
return dist[n];
}
void Init()
{
for(int i=; i<=n ;i++)
{
G[i].clear();
vis[i] = false;
dist[i] = ;
}
dist[] = INF;
}
int main()
{
int T, cas = ;
Edge P;
cin >> T; while(T--)
{
scanf("%d%d",&n,&m); Init();
for(int i=; i<m; i++)
{
int a, b, c;
scanf("%d%d%d",&a,&b,&c);
P.e = b, P.w = c; G[a].push_back(P); P.e = a; G[b].push_back(P);
}
long long ans = Spfa(); printf("Scenario #%d:\n%lld\n",cas++,ans);
if(T)
printf("\n"); }
return ;
}

poj1797 - Heavy Transportation(最大边,最短路变形spfa)的更多相关文章

  1. Heavy Transportation POJ 1797 最短路变形

    Heavy Transportation POJ 1797 最短路变形 题意 原题链接 题意大体就是说在一个地图上,有n个城市,编号从1 2 3 ... n,m条路,每条路都有相应的承重能力,然后让你 ...

  2. POJ--1797 Heavy Transportation (最短路)

    题目电波: POJ--1797 Heavy Transportation n点m条边, 求1到n最短边最大的路径的最短边长度 改进dijikstra,dist[i]数组保存源点到i点的最短边最大的路径 ...

  3. POJ1797 Heavy Transportation —— 最短路变形

    题目链接:http://poj.org/problem?id=1797 Heavy Transportation Time Limit: 3000MS   Memory Limit: 30000K T ...

  4. (Dijkstra) POJ1797 Heavy Transportation

    Heavy Transportation Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 53170   Accepted:  ...

  5. POJ1797 Heavy Transportation 【Dijkstra】

    Heavy Transportation Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 21037   Accepted:  ...

  6. [POJ1797] Heavy Transportation(最大生成树 || 最短路变形)

    传送门 1.最大生成树 可以求出最大生成树,其中权值最小的边即为答案. 2.最短路 只需改变spfa里面的松弛操作就可以求出答案. ——代码 #include <queue> #inclu ...

  7. POJ1797 Heavy Transportation (堆优化的Dijkstra变形)

    Background Hugo Heavy is happy. After the breakdown of the Cargolifter project he can now expand bus ...

  8. POJ1797 Heavy Transportation(SPFA)

    题目要求1到n点的最大容量的增广路. 听说是最短路求的,然后乱搞就A了.. 大概能从Bellman-Ford的思想,dk[u]表示从源点出发经过最多k条边到达u点的最短路,上理解正确性. #inclu ...

  9. [poj1797]Heavy Transportation<最大生成树prim&kruskal>

    题目链接:http://poj.org/problem?id=1797 题意:给定n个点,m条边,每条边连接两点切有权值.求点1到点n的路径的上的最小边的值最大... 翻别人博客找到的题,方法挺多的, ...

随机推荐

  1. [转] TCP数据包重组实现分析

    PS: 这个实现对于某些特定情况未必是最佳实现,可以用数组来代替队列来实现 参照TCP/IP详解第二卷24~29章,详细论述了TCP协议的实现,大概总结一下TCP如何向应用层保证数据包的正确性.可靠性 ...

  2. Android(java)学习笔记246:ContentProvider使用之学习ContentProvider(内容提供者)的目的

    1.使用ContentProvider,把应用程序私有的数据暴露给别的应用程序,让别的应用程序完成对自己私有的数据库数据的增删改查的操作. 2.ContentProvider的应用场景: 获取手机系统 ...

  3. Canvas transform浅析

    没有前奏,直接进入主题 transform调用方法: ctx.transform(a,b,c,d,e,f);如下 var ctx = document.getElementById("myC ...

  4. 简单实现图片间的切换动画 主要用到ViewPager

    简单实现图片间的切换动画 主要用到ViewPagerViewPager是android扩展包v4包中的类,这个类可以让用户左右切换当前的view.ViewPager类需要一个PagerAdapter适 ...

  5. dotnet与各种数据库类型对应关系

    Data Provider Parameter format sqlclient @parametername oledb ?    mark odbc ?   mark oracleclient : ...

  6. Asp.Net 母版页

    背景:回顾下以前用到过的asp.net控件 介绍: 使用 ASP.NET 母版页可以为应用程序中的页创建一致的布局.单个母版页可以为应用程序中的所有页(或一组页)定义所需的外观和标准行为.然后可以创建 ...

  7. VsCode使用技巧

    VsCode版本1.7.2 1. node智能提示:vscode1.7之前的版本智能提示是采用jsconfig.json方式,在右下角会有小灯泡,点击创建jsconfig.json.1.7之后使用Ty ...

  8. hello,boke

    我一名学习软件工程金融服务工程的学生,简单来说就是学习计算机类的,对于自己的介绍,从平时生活中来说吧,我一直处于一种很中规中矩的生活状态里,平时玩玩手机.追追剧.和室友一起去图书馆自习,考前拼命复习两 ...

  9. ExtJs API 下载以及部署

    ExtJs API 下载方法 1.进入sencha官网:https://www.sencha.com/ 2.点击“Docs”进入文档帮助页面:http://docs.sencha.com/ 3.点击左 ...

  10. 比较两个字符,相等输出yes,不相等输出no

    DATA SEGMENTSHOW1 DB 'YES$'SHOW2 DB 'NO$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATABEGIN: MOV AX,DA ...