【图论最短路】【CQBZOJ 2431】Trick
来源:互联网 发布:c 程序员用mac好吗 编辑:程序博客网 时间:2024/06/07 10:01
问题 D(2431): Trick
时间限制: 1 Sec 内存限制: 128 MB
题目描述
暴躁的稻草人,最终以自爆来给我们的队伍致命一击,全队血量见底,稻草人也一分为二。还好我们有雨柔妹子,瞬间精力回满。不过事后姜小弟和龙腹黑就开始了报复。他们读取存档,将若干暴躁的稻草人活捉。然后将它们放到一个迷宫的入口。迷宫是有向图。此刻暴躁的稻草人们在1号位置,而迷宫出口在n号位置。因为稻草人会自爆,所以他每经过一条路数量就会加倍。每条路上有敌人,会消耗稻草人
输入
第一行两个数N(≤ 50000),M(≤ 100000)表示点位数与边数。
以下M行,每行三个数a,b,c表示从a到b两点间的边权是c(|c| ≤ 10000)
输出
输出仅一个整数,表示最小初始稻草人数。
样例输入
5 4
1 2 -3
1 3 -6
3 4 1
4 5 -9
样例输出
4
我们可以转换一下思路,不防假设最后只有一个稻草人到了终点,然后按照他的规则反着走回去,便可以求起点的稻草人数量,当然有些时候一个稻草人是走不回去的,当我们进行向回走操作时,若稻草人数量小于1,则把他变成1,继续走。
#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#include<queue>using namespace std;#define MAXN 50000#define MAXM 100000#define INF 0x3f3f3f3ftypedef long long int LL;struct node{ int v,w; node *next;}*adj[MAXN+10],Edges[MAXM+10],*New=Edges;void addedge(int u,int v,int w){ node *p=++New; p->v=v; p->w=w; p->next=adj[u]; adj[u]=p;}int N,M;LL dist[MAXN+10];bool vis[MAXN+10];queue<int>que;LL Spfa(int S,int T){ memset(dist,0x3f,sizeof(dist)); memset(vis,0,sizeof(vis)); while(!que.empty())que.pop(); dist[S]=1; vis[S]=1; que.push(S); int now; while(!que.empty()) { now=que.front();que.pop(); vis[now]=0; for(node *p=adj[now];p!=NULL;p=p->next) if(dist[p->v]>max((dist[now]-p->w+1)/2,1ll)) { dist[p->v]=max((dist[now]-p->w+1)/2,1ll); if(!vis[p->v]) { que.push(p->v); vis[p->v]=1; } } } return dist[T];}int main(){ scanf("%d%d",&N,&M); int i,j; int a,b,c; for(i=1;i<=M;++i) { scanf("%d%d%d",&a,&b,&c); addedge(b,a,c); } printf("%lld\n",Spfa(N,1));}
2 0
- 【图论最短路】【CQBZOJ 2431】Trick
- 【图论最短路】【CQBZOJ 2419】百进制数
- 【图论最短路】【CQBZOJ 2432】Maze
- 【图论最短路】【CQBZOJ 1550】避开怪兽
- 【图论最短路】【CQBZOJ 1633】【图论专项赛】位图
- 【图论最短路】【CQBZOJ 1634】【图论专项赛】外星人入侵
- Hdu-6071 Lazy Running(trick最短路)
- trick
- Trick
- trick
- 【cqbzoj 1227】字串距离
- 【搜索】【CQBZOJ 2601】化学
- CQBZOJ 避开怪兽
- cqbzoj 1158 剔除多余括号
- 【CQBZOJ 2368】[线段树]球星
- 【CQBZOJ 3345】[树状数组]pizza
- [CQBZOJ]3388:peaks弱化版
- dellphi trick
- Android的消息机制
- iOS备忘录之查看真机沙盒文件
- poj 1088 滑雪 动态规划(记忆化搜索)
- 【读书笔记】iOS设计模式解析(第二章)
- 勾股数的一些性质
- 【图论最短路】【CQBZOJ 2431】Trick
- Kubernetes实践(1)--环境搭建
- 软件测试(第2版)_Paul学习02_01——Ch1测试概述_02
- 内网渗透之跨Vlan渗透的一种方法
- Android文件的操作
- 改善C#程序的建议5:引用类型赋值为null与加速垃圾回收
- POJ 1789Truck History(最小生成树)
- Java单例模式深入详解
- TestNG中测试函数的依赖关系详解