博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
处女座的比赛资格(拓扑排序求最短路)
阅读量:3898 次
发布时间:2019-05-23

本文共 1131 字,大约阅读时间需要 3 分钟。

【题解】

显然这是个有向无环图的单源最短路问题,由于存在负权边,Dijkstra算法显然不适用,特殊 DAG 的性质使得 SPFA 算法无法在规定的时间限内求解出答案,Bellman-Ford算法显然不符合时间复杂度。()

2≤n≤10^5,这显然是一个稀疏图,我们可以根据跑出来的拓扑排序求出最短路。

注意:如果两个人走完全程反而赚钱了那么消费作0处理.

【代码】

#define mem(a,b) memset(a,b,sizeof(a))using namespace std;typedef long long int ll;const int maxn=1e5+5;const int INF=0x3f3f3f3f;struct node{    int next, to;    ll jffzr,cnz,c;}f[maxn<<1];int in[maxn],temp[maxn];int head[maxn];ll d[maxn];int n,m;ll Topo(int s) //拓扑排序{    queue 
q; for(int i=1;i<=n;i++) { d[i]=INF; temp[i]=in[i]; if(!temp[i]) q.push(i); //找到入度为0的起始点 } d[1]=0; while(!q.empty()) { int u=q.front(); q.pop(); for(int i=head[u];i!=-1;i=f[i].next) { int v=f[i].to; d[v]=min(d[v],d[u]+f[i].c-(s==0?f[i].cnz:f[i].jffzr)); temp[v]--; if(temp[v]==0) q.push(v); } } return d[n]>0?d[n]:0; //没有花钱返回0}int main(){ int T; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); mem(head,-1),mem(in,0); for(int i=0;i
s2) printf("rip!!!\n%lld\n",s1-s2); else puts("oof!!!"); }}

 

转载地址:http://bfben.baihongyu.com/

你可能感兴趣的文章
HTML我的家乡杭州网页设计作业源码(div+css)~ HTML+CSS网页设计期末课程大作业 ~ web前端开发技术 ~ web课程设计网页规划与设计 ~HTML期末大作业
查看>>
HTML网页设计期末课程大作业~动漫樱桃小丸子5页表格div+css学生网页设计作业源码
查看>>
HTML学生网页设计作业成品~化妆品官方网站设计与实现(HTML+CSS+JS)共8个页面
查看>>
web课程设计网页规划与设计~在线阅读小说网页共6个页面(HTML+CSS+JavaScript+Bootstrap)
查看>>
HTML期末大作业~棋牌游戏静态网站(6个页面) HTML+CSS+JavaScript
查看>>
XmlValidationModeDetector源码分析
查看>>
解析 xml 为Document
查看>>
中国银行2013年校园招聘机试回忆录(综合部分专业题 考点)
查看>>
广发银行2013校园招聘笔试回忆录
查看>>
Android canvas rotate():平移旋转坐标系至任意原点任意角度-------附:android反三角函数小结...
查看>>
Matlab读取avi视频并播放 你必须要知道的
查看>>
word字体大小与公式编辑器字体对照表
查看>>
visio画图-----如何克服两箭头交叉变形 及 箭头自动重绘?
查看>>
Android开发:安装NDK,移植OpenCV2.3.1,JNI调用OpenCV全过程
查看>>
“金9银10”2020年JVM高频率面试题整理,技术提升就差一个点!
查看>>
简简单单的分享2020常见的MySQL面试题MySQL与答案整理
查看>>
听说只有大厂的Android工程师才能全答对这20道题?我看你在吹牛哦!
查看>>
武功秘籍之 Redis 面试题全掌握,学完马上找面试官对线!
查看>>
50道!2020年!!MySQL高频数据库面试题解析,你都懂了吗?
查看>>
如何用Spring Boot加密配置文件中的特殊内容示例代码详解
查看>>