【lightoj-1002】Country Roads(dijkstra变形)
2024-09-25 22:39:18
light1002:传送门
【题目大意】
n个点m条边,给一个源点,找出源点到其他点的‘最短路’
定义:找出每条通路中最大的cost,这些最大的cost中找出一个最小的即为‘最短路’,dijkstra变形。dis[i]为s->i的‘最短路’
#include<bits/stdc++.h>
int mp[][],dis[],vis[];
using namespace std;
int n;
void dij(int s)
{
int i,j,k;
for(i=; i<n; i++)
{
dis[i]=mp[s][i];
vis[i]=;
}
vis[s]=;
for(j=; j<n; j++)
{
int min1=1e9;
for(i=; i<n; i++)
{
if(min1>dis[i]&&!vis[i])
{
min1=dis[i];
k=i;
}
}
vis[k]=;
for(i=; i<n; i++)
{
if(!vis[i]&&mp[k][i]<1e9)
{
dis[i]=min(dis[i],max(dis[k],mp[k][i]));
}
}
}
}
int main()
{
int t,u,v,w,i,j;
cin>>t;
for(int co=; co<=t; co++)
{
int m;
scanf("%d%d",&n,&m);
for(i=; i<n; i++)
for(j=; j<n; j++)
{
if(i==j)
mp[i][j]=;
else
mp[i][j]=1e9;
}
while(m--)
{
scanf("%d%d%d",&u,&v,&w);
if(mp[u][v]>w)
mp[u][v]=mp[v][u]=w;
}
int s;
cin>>s;
dij(s);
printf("Case %d:\n",co);
for(i=; i<n; i++)
{
if(dis[i]==1e9)
puts("Impossible");
else
printf("%d\n",dis[i]);
}
}
return ;
}
最新文章
- pl/sql死锁oracle
- HackerRank and MiniMax
- ASP.NET MVC 中CSS JS压缩合并 功能的使用方法
- BZOJ 1729: [Usaco2005 dec]Cow Patterns 牛的模式匹配
- [转]百度地图点聚合MarkerClusterer移动地图时,Marker的Label丢失的问题
- 自动生成 Lambda查询和排序,从些查询列表so easy
- poj 1664 放苹果_整数拆分
- Python web框架有哪些
- 数据存储与访问之——初见SQLite数据库
- c++ 之bind使用
- selenium+python-unittest多线程执行用例
- 非阻塞tcp服务器与阻塞的tcp服务器对比
- 根据设备width(375)动态设置font-size
- 【golang-GUI开发】QSS的使用(一)———QSS入门指南
- Python requests 多线程抓取 出现HTTPConnectionPool Max retires exceeded异常
- 取消开机logo,改成代码刷屏
- Nginx性能优化
- tomcat项目中配置数据库连接池
- Android上实现MVP模式的途径
- 转:【HTTP】常见错误码说明
热门文章
- mysql什么情况下使用索引
- 我的Android进阶之旅------>android Button上面的英文字符串自动大写的问题解决
- java.lang.instrument: 一个Java对象占用多少字节?
- MDK中One ELF Section per Function选项功能探究【转载】
- Hadoop家族学习路线图-张丹老师
- springmvc ModelAndView
- HDU - 6393 Traffic Network in Numazu (LCA+RMQ+树状数组)
- CentOS7种搭建FTP服务器
- netty5----心跳
- 如何选择单片机和Android-LInux-ARM开发板?