题意:

给出n个点和一些单向边,问从0到n+1

如果不能到则输出-1

如果能一步到则输出0

否则输出第一个到达的节点

如果两条路距离相等,则输出较小的节点

思路:

赛场上从前向后扫然后又向前推的,,,特别别扭

回来之后想了下,可以建反向边,从n+1走到0记录前驱就好了

/* ***********************************************
Author        :devil
Created Time  :2016/6/10 14:20:54
************************************************ */
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <cmath>
#include <stdlib.h>
using namespace std;
const int N=1010;
const int inf=0x3f3f3f3f;
struct node
{int v,d;node(int a=0,int b=0):v(a),d(b){}bool operator < (const node &a) const{return d>a.d;}
};
struct edge
{int v,cost;edge(int a=0,int b=0):v(a),cost(b){}
};
vector<edge> eg[N];
bool vis[N];
int n,m,dis[N],pre[N];
void dijkstra(int x)
{memset(vis,false,sizeof(vis));for(int i=0; i<=n+1; i++)dis[i]=inf;priority_queue<node>q;while(!q.empty()) q.pop();dis[x]=0;q.push(node(x,0));node tmp;while(!q.empty()){tmp=q.top();q.pop();int u=tmp.v;if(vis[u]) continue;vis[u]=1;for(int i=0; i<eg[u].size(); i++){int v=eg[tmp.v][i].v;int cost=eg[u][i].cost;if(!vis[v]&&dis[v]>dis[u]+cost){dis[v]=dis[u]+cost;pre[v]=u;q.push(node(v,dis[v]));}else if(!vis[v]&&dis[v]==dis[u]+cost)pre[v]=min(pre[v],u);}}
}
int main()
{//freopen("in.txt","r",stdin);int t,u,v,w;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);for(int i=0;i<=n+1;i++)eg[i].clear();while(m--){scanf("%d%d%d",&u,&v,&w);eg[v].push_back(edge(u,w));}dijkstra(n+1);if(dis[0]==inf){printf("-1\n");continue;}if(pre[0]==n+1){printf("0\n");continue;}printf("%d\n",pre[0]);}return 0;
}

转载于:https://www.cnblogs.com/d-e-v-i-l/p/5573637.html

第七届山东省省赛C Proxy(最短路)相关推荐

  1. ACM第二站——2018年第九届山东省省赛

    5月6日:第九届山东省省赛 真正的ACM比赛,怀着无比的期待和满心的激动,终于迎来了2018年的第九届山东省省赛,初出茅庐的我们打响的第一场"战争",就着那一腔的热血,将会随5月6 ...

  2. 记第七届ACM校赛-回忆

    这一次校赛其实是两个月半之前的事情了---4月29日.那天比赛完之后,自己就想当天写写这一次比赛的事,但是由于那天比赛完之后又马上又赶回家,5个小时的比赛加上2个小时的车程,整个人都觉得很累,所以那天 ...

  3. 2016山东省第七届ACM省赛总结

    好久都没更过了 前段时间真是心态不好 状态也不好 都不打算练了 自己堕落了一阵子 醒悟了 感觉还是应该干些正事 加上去北京旅游(lanqiao)待了几天 心情也好多了 啊 自己太水 还要接着干. 好 ...

  4. sdut 2153:Clockwise(第一届山东省省赛原题,计算几何+DP)

    Clockwise Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Saya have a long necklace with ...

  5. sdut 2152:Balloons(第一届山东省省赛原题,DFS搜索)

    Balloons Time Limit: 1000MS Memory limit: 65536K 题目描述 Both Saya and Kudo like balloons. One day, the ...

  6. 第七届山东省Acm程序设计竞赛赛后总结

    其实这次相对来说是比较轻松的,经过差不多2年的磨合,大家的默契度已经配合的足够熟练,而对于考场的压力和紧张感,相比去年前几次要放松许多,说来实在奇怪,去年我们嚷嚷着要拿XXX,到最后一无所获,而这一次 ...

  7. 【STM32G4】备战蓝桥杯嵌入式---实战---第七届嵌入式省赛—“模拟液位检测告警系统”

    文章目录 前言 一.题目 二.模块初始化以及功能分析 1.模块的初始化 2.模块功能分析 三.函数实现 1.void Display(void); 2.void EEPROM_Read(void);v ...

  8. sdut 2154:Shopping(第一届山东省省赛原题,水题)

    Shopping Time Limit: 1000MS Memory limit: 65536K 题目描述 Saya and Kudo go shopping together. You can as ...

  9. (国赛) 第七届工创赛之智能垃圾分类

    前言 省赛博客(k210) 比赛成绩:全国一等奖 继上次省赛,更换如下配置: 1. 开发板:    jeston nano 2. 摄像头:  USB广角摄像头 3. 算法:      yolov3换成 ...

最新文章

  1. 系统进程间的同步机制
  2. MVC新手教程三:Entity Framework 4.0 来实现MVC的增删改查功能,10分钟搞定
  3. QT消息/事件循环机制与多线程的关系
  4. css3自适应布局单位vw,vh
  5. C#LeetCode刷题之#101-对称二叉树(Symmetric Tree)
  6. vs code 前端如何以服务器模式打开 [安装服务器] server insteall
  7. 数据结构与算法笔记-------选择排序
  8. VScode C语言环境搭建教程
  9. MATLAB2020安装教程
  10. NAT技术与代理服务器
  11. python excel怎么将字母后的数字取出来_利用通配符将Excel中英文字母、中文、数字提取出来...
  12. Pranava Pra 使用教程
  13. JavaScript保留小数位数代码
  14. 读书笔记2区块链与大数据
  15. Python中匿名函数详解
  16. 基于局域网IP的考勤系统设计与实现
  17. Python写王者荣耀小游戏
  18. flutter开发插件和包
  19. rabbitmq安装问题汇总
  20. 刘奇-豌豆荚分布式redis的设计与实现

热门文章

  1. C:/WINDOWS/system32/x 病毒分析和解决建议
  2. 互联网公装企业“inDeco领筑智造”完成A+B轮近1.1亿元融资
  3. Oracle(order by)
  4. Java 链接MySQL数据库时报的connect和denied错解决方法
  5. Laravel 集成 JPush 极光推送指北
  6. Android Scroller简单用法
  7. android Json详解
  8. js 判断字符串是否包含某字符串
  9. 第十三周项目4-数组的排序:冒泡排序
  10. 用eclipse来运行带参数的命令行程序,配置命令行程序的参数