1254. 最难的任务

★   输入文件:hardest.in   输出文件:hardest.out   简单对比
时间限制:1 s   内存限制:128 MB

【题目描述】

这个真的很难。算出 12345678987654321!,这个“!”是阶乘的意思。

呵,我在开玩笑。没有人成功的解决。

事实上,你是一个间谍。你要窃取一些敌军机密,现在你需要找到一个方法使你逃走的时间最少。

这里有很多交叉点和很多道路,在两个交叉点间可能有多条路。你很困惑,但随身携带笔记本电脑让你很快乐。

【输入格式】

第一行有一个整数T(T≤10)表示测试数据个数。

每组数据以两个整数开始,n和m(1≤n≤200,0≤m≤10000),交叉点的个数和各自的道路数。下面m行有三个整数 i,j,k(i<>j, 1≤k≤10000), 意思是i和j中间有一条长度为k的路。

你可以假设交叉点的编号为1...n。你需要从交叉点1到交叉点n。

道路是双向的。

【输出格式】

对于每组测试数据,打印最短距离。如果没有路可以出去,打印-1。

【样例输入】

1
2 1
1 2 3

【样例输出】

3

QAQ这题也太坑了吧 交了3遍才过 
一共出了两个问题
1.如果无法到达 输出-1
这里有一点需要注意的是尽管memset里写的0x3f 但是实际的赋值是0x3f3f3f3f
2.有重边肿么办?
额 我用了一个神奇的方法
就是一开始把边权数组Cost全部赋值为正无穷(反正就是一个很大的数)
每次输入边权 就把边权和Cost数组里的值取一个min
(这一道题数据范围小 Cost我就开了个二维数组,太蒟了)
嗯嗯 然后我没有处理就是如果已经加入过该边就不再加了
首先这可能会很慢 每次都要从前往后猛扫一遍
其次 Dijkstra里不是有一个vis数组吗 走过一遍就不会再走了 只需要处理一下边权
使得边权保持最小就行了 Σ(⊙▽⊙"a
♪(^∇^*)
AC代码:
#include<bits/stdc++.h>
#define pa pair<int,int>
#define maxn 205
#define INF 0x3f3f3f3f
using namespace std;
int T,n,m;
bool Bian[maxn][maxn];
int Cost[maxn][maxn];
vector<int> v[maxn];
priority_queue<pa,vector<pa>,greater<pa> > q;
int dis[maxn],vis[maxn];
void Dijkstra()
{
memset(dis,0x3f,sizeof(dis));
memset(vis,,sizeof(vis));
dis[]=;
q.push(make_pair(,));
while(!q.empty())
{
int x=q.top().second;
q.pop();
if(vis[x])
continue;
vis[x]=;
for(int i=;i<v[x].size();i++)
{
int y=v[x][i];
if(dis[x]+Cost[x][y]<dis[y])
{
dis[y]=dis[x]+Cost[x][y];
q.push(make_pair(dis[y],y));
}
}
}
}
int main()
{
freopen("hardest.in","r",stdin);
freopen("hardest.out","w",stdout);
scanf("%d",&T);
while(T--)
{
memset(Cost,0x3f,sizeof(Cost));
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
Cost[x][y]=Cost[y][x]=min(Cost[x][y],z);
v[x].push_back(y);//QAQ有重边到底咋办啊
v[y].push_back(x);
}
Dijkstra();
if(dis[n]==INF)
printf("-1\n");
else
printf("%d\n",dis[n]);
} return ;
}

 

最新文章

  1. jQuery拖动剪裁图片作为头像
  2. ThreadPoolTimer -延迟执行, 周期执行
  3. jquery 序列化
  4. 【好书摘要】性能优化中CPU、内存、磁盘IO、网络性能的依赖
  5. css字体样式(Font Style),属性
  6. 【Qt】Qt之进程间通信(共享内存)【转】
  7. 每次都觉得很神奇的JS
  8. 关于expanded一级二级菜单数据的分组排序
  9. hdoj 2040
  10. [置顶] Ajax核心--XMLHttpRequest对象
  11. 转:requirejs打包压缩r.js使用示例
  12. github的使用与问题
  13. base64格式图片转换为FormData对象进行上传
  14. Google地球查看香港地形
  15. Hadoop大数据通用处理平台
  16. springboot 打war
  17. vmware 14 密钥
  18. [转]Prometheus 与 Grafana 实现服务器运行状态监控
  19. 福利:42套AI技术视频免费领取
  20. ef core一个数据库多个dbcontext

热门文章

  1. 微信小程序在ios下Echarts图表不能滑动的解决方案
  2. 2018.8.19 2018暑假集训之maxnum
  3. MySQL sys Schema 简单介绍-2
  4. 【烂笔头】常用adb命令记录
  5. 使用ajax的几种方式
  6. 数字IC后端布局阶段对Tie-high和Tie-low Net的处理
  7. windows7(win7)64/32位激活工具
  8. AWS S3 上传文件
  9. 跟着大彬读源码 - Redis 5 - 对象和数据类型(上)
  10. Docker笔记(六):容器管理