第七届山东省省赛C Proxy(最短路)
题意:
给出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(最短路)相关推荐
- ACM第二站——2018年第九届山东省省赛
5月6日:第九届山东省省赛 真正的ACM比赛,怀着无比的期待和满心的激动,终于迎来了2018年的第九届山东省省赛,初出茅庐的我们打响的第一场"战争",就着那一腔的热血,将会随5月6 ...
- 记第七届ACM校赛-回忆
这一次校赛其实是两个月半之前的事情了---4月29日.那天比赛完之后,自己就想当天写写这一次比赛的事,但是由于那天比赛完之后又马上又赶回家,5个小时的比赛加上2个小时的车程,整个人都觉得很累,所以那天 ...
- 2016山东省第七届ACM省赛总结
好久都没更过了 前段时间真是心态不好 状态也不好 都不打算练了 自己堕落了一阵子 醒悟了 感觉还是应该干些正事 加上去北京旅游(lanqiao)待了几天 心情也好多了 啊 自己太水 还要接着干. 好 ...
- sdut 2153:Clockwise(第一届山东省省赛原题,计算几何+DP)
Clockwise Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 Saya have a long necklace with ...
- sdut 2152:Balloons(第一届山东省省赛原题,DFS搜索)
Balloons Time Limit: 1000MS Memory limit: 65536K 题目描述 Both Saya and Kudo like balloons. One day, the ...
- 第七届山东省Acm程序设计竞赛赛后总结
其实这次相对来说是比较轻松的,经过差不多2年的磨合,大家的默契度已经配合的足够熟练,而对于考场的压力和紧张感,相比去年前几次要放松许多,说来实在奇怪,去年我们嚷嚷着要拿XXX,到最后一无所获,而这一次 ...
- 【STM32G4】备战蓝桥杯嵌入式---实战---第七届嵌入式省赛—“模拟液位检测告警系统”
文章目录 前言 一.题目 二.模块初始化以及功能分析 1.模块的初始化 2.模块功能分析 三.函数实现 1.void Display(void); 2.void EEPROM_Read(void);v ...
- sdut 2154:Shopping(第一届山东省省赛原题,水题)
Shopping Time Limit: 1000MS Memory limit: 65536K 题目描述 Saya and Kudo go shopping together. You can as ...
- (国赛) 第七届工创赛之智能垃圾分类
前言 省赛博客(k210) 比赛成绩:全国一等奖 继上次省赛,更换如下配置: 1. 开发板: jeston nano 2. 摄像头: USB广角摄像头 3. 算法: yolov3换成 ...
最新文章
- 系统进程间的同步机制
- MVC新手教程三:Entity Framework 4.0 来实现MVC的增删改查功能,10分钟搞定
- QT消息/事件循环机制与多线程的关系
- css3自适应布局单位vw,vh
- C#LeetCode刷题之#101-对称二叉树(Symmetric Tree)
- vs code 前端如何以服务器模式打开 [安装服务器] server insteall
- 数据结构与算法笔记-------选择排序
- VScode C语言环境搭建教程
- MATLAB2020安装教程
- NAT技术与代理服务器
- python excel怎么将字母后的数字取出来_利用通配符将Excel中英文字母、中文、数字提取出来...
- Pranava Pra 使用教程
- JavaScript保留小数位数代码
- 读书笔记2区块链与大数据
- Python中匿名函数详解
- 基于局域网IP的考勤系统设计与实现
- Python写王者荣耀小游戏
- flutter开发插件和包
- rabbitmq安装问题汇总
- 刘奇-豌豆荚分布式redis的设计与实现
热门文章
- C:/WINDOWS/system32/x 病毒分析和解决建议
- 互联网公装企业“inDeco领筑智造”完成A+B轮近1.1亿元融资
- Oracle(order by)
- Java 链接MySQL数据库时报的connect和denied错解决方法
- Laravel 集成 JPush 极光推送指北
- Android Scroller简单用法
- android Json详解
- js 判断字符串是否包含某字符串
- 第十三周项目4-数组的排序:冒泡排序
- 用eclipse来运行带参数的命令行程序,配置命令行程序的参数