poj 1797 Heavy Transportation(最短路变种2,连通图的最小边)
改动见下,请自行画图理解
具体细节也请看下面的代码:
这个花了300多ms
#define _CRT_SECURE_NO_WARNINGS #include<string.h>
#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std; const int MAXN=; #define typec int
const typec INF=;//防止后面溢出,这个不能太大
bool vis[MAXN];
typec cost[MAXN][MAXN];
typec lowcost[MAXN];
void Dijkstra(int n,int beg) //连通图的最小边——最短路变种2,恰好和poj 2253 相反
{
for(int i=;i<=n;i++)
{
lowcost[i]=cost[beg][i];vis[i]=false;//因为初始化都在这里了,所以后面的对起点的初始化可以省去
}
for(int i=;i<=n;i++)
{
typec temp=-;//此处改动
int k=-;
for(int j=;j<=n;j++)
{
if(!vis[j]&&lowcost[j]>temp)//此处改动
{
temp=lowcost[j];
k=j;
}
}
vis[k]=true;
for(int l=;l<=n;l++)
{
if(!vis[l])
{
lowcost[l]=max(min(lowcost[k],cost[k][l]),lowcost[l]);//原来改动在这列,具体可画图求证感知
}
}
}
} int main()
{
int n,i,id=,t,m,a,b,c;
scanf("%d",&t);
for(;id<=t;)
{
scanf("%d%d",&n,&m);//路口数和街道数不要反了!
memset(cost,,sizeof(cost));//初始化请注意,这里要都变为0,相当于无法运货,即载重量为0
for(i=;i<=m;i++)
{
scanf("%d%d%d",&a,&b,&c);
cost[a][b]=cost[b][a]=c;//这里请注意
}
Dijkstra(n,);
printf("Scenario #%d:\n%d\n\n",id++,lowcost[n]);//居然在输出这里跪了
}
return ;
}
在初始化时改一笔我觉得更容易理解,在此处也可以AC,但是时间多了,代码如下,花了400多ms
#define _CRT_SECURE_NO_WARNINGS #include<string.h>
#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std; const int MAXN=; #define typec int
const typec INF=0x3f3f3f3f;//防止后面溢出,这个不能太大
bool vis[MAXN];
typec cost[MAXN][MAXN];
typec lowcost[MAXN];
void Dijkstra(int n,int beg) //连通图的最小边——最短路变种2,恰好和poj 2253 相反
{
for(int i=;i<=n;i++)
{
lowcost[i]=cost[beg][i];vis[i]=false;//因为初始化都在这里了,所以后面的对起点的初始化可以省去
}
for(int i=;i<=n;i++)
{
typec temp=-;//此处改动
int k=-;
for(int j=;j<=n;j++)
{
if(!vis[j]&&lowcost[j]>temp)//此处改动
{
temp=lowcost[j];
k=j;
}
}
vis[k]=true;
for(int l=;l<=n;l++)
{
if(!vis[l])
{
lowcost[l]=max(min(lowcost[k],cost[k][l]),lowcost[l]);//原来改动在这列,具体可画图求证感知
}
}
}
} int main()
{
int n,i,id=,t,m,a,b,c;
scanf("%d",&t);
for(;id<=t;)
{
scanf("%d%d",&n,&m);//路口数和街道数不要反了!
memset(cost,,sizeof(cost));//初始化请注意,这里要都变为0,相当于无法运货,即载重量为0 for(i=;i<=n;i++)
cost[i][i]=INF; //感觉加了这个更容易理解,因为是同一地方,载重量可以无限大 for(i=;i<=m;i++)
{
scanf("%d%d%d",&a,&b,&c);
cost[a][b]=cost[b][a]=c;//这里请注意
}
Dijkstra(n,);
printf("Scenario #%d:\n%d\n\n",id++,lowcost[n]);//居然在输出这里跪了
}
return ;
}
poj 1797 Heavy Transportation(最短路变种2,连通图的最小边)的更多相关文章
- POJ 1797 Heavy Transportation (最短路)
Heavy Transportation Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 22440 Accepted: ...
- POJ 1797 Heavy Transportation 最短路变形(dijkstra算法)
题目:click here 题意: 有n个城市,m条道路,在每条道路上有一个承载量,现在要求从1到n城市最大承载量,而最大承载量就是从城市1到城市n所有通路上的最大承载量.分析: 其实这个求最大边可以 ...
- POJ 1797 Heavy Transportation(Dijkstra变形——最长路径最小权值)
题目链接: http://poj.org/problem?id=1797 Background Hugo Heavy is happy. After the breakdown of the Carg ...
- poj 1797 Heavy Transportation(最大生成树)
poj 1797 Heavy Transportation Description Background Hugo Heavy is happy. After the breakdown of the ...
- POJ 1797 Heavy Transportation / SCU 1819 Heavy Transportation (图论,最短路径)
POJ 1797 Heavy Transportation / SCU 1819 Heavy Transportation (图论,最短路径) Description Background Hugo ...
- POJ.1797 Heavy Transportation (Dijkstra变形)
POJ.1797 Heavy Transportation (Dijkstra变形) 题意分析 给出n个点,m条边的城市网络,其中 x y d 代表由x到y(或由y到x)的公路所能承受的最大重量为d, ...
- POJ 1797 Heavy Transportation
题目链接:http://poj.org/problem?id=1797 Heavy Transportation Time Limit: 3000MS Memory Limit: 30000K T ...
- POJ 1797 Heavy Transportation SPFA变形
原题链接:http://poj.org/problem?id=1797 Heavy Transportation Time Limit: 3000MS Memory Limit: 30000K T ...
- POJ 1797 ——Heavy Transportation——————【最短路、Dijkstra、最短边最大化】
Heavy Transportation Time Limit:3000MS Memory Limit:30000KB 64bit IO Format:%I64d & %I64 ...
随机推荐
- tomcat中的get、post区别
最近做一个项目,前台传到后台的数据是乱码.看着代码应该是正确的,但是就是有问题,然后请教了旁边的老司机才找到问题是什么.话不多说,下面是模拟情景的代码,其实也很简单,前台一个form表单,post ...
- 1.配置EditPuls-编译和运行java程序
1.工具>配置自定义工具 2.添加工具>程序 1).编译java程序 2).运行java程序
- wage
#include<iostream> using namespace std; int main() { double wage1,wage2,time; cout<<&quo ...
- 转:Android studio Gradle
提高Android Studio中Gradle执行效率 分类: android studio2015-06-26 11:54 2374人阅读 评论(2) 收藏 举报 android studiogra ...
- SequoiaDB 1.5 版本发布
SequoiaDB 1.5 – 2013.11.13 新特性 1. 新增聚合特性,API实现 GROUPBY, MAX 等功能: 2. 全新改版的Web管理界面: 3. 提供C#语言 ...
- java递归方法
一个方法体内调用他自身,称为方法递归. 方法递归是一种隐式的循环,Tahiti重复执行某段代码,但这种重复执行无需循环控制 /* Author:oliver QIN DATE:2015-12-19 D ...
- c++程序开发利器
c++程序开发利器 vc6visual stdio系列都很好,个人最喜欢vc6,主要原因是快捷,classview和wizardbar功能强大,其他vs秒杀其他的vs windbgWinDbg是在wi ...
- Entity Framework学习笔记(六)----使用Lambda查询Entity Framework(1)
请注明转载地址:http://www.cnblogs.com/arhat 在前几章中,老魏一直使用Linq来查询Entity Framework.但是老魏感觉,如果使用Linq的话,那么Linq的返回 ...
- UEFI+GPT 修复 win10启动
要修复引导文件大致有以下几个步骤(按照我自己修复的步骤来的,其他情况可结合上面参考资料探索,大体思路应该没有变化): 挂载ESP分区 由于我的windows8.1已经无法进入了,Ubuntu不知道能不 ...
- div 布局2
转:http://www.kwstu.com/ArticleView/divcss_2013929173533658 关于DIV+CSS布局中用到的CSS必备知识请看:http://www.kwstu ...