今天做了个练习赛,,这道题目主要是题意坑爹,间谍在战争时期想要传递一份邮件回国,邮件可以在各个邮局之间传播,但传递是单向的,并且耗时,如果两个邮局在一个国家的话,那么邮件在他们之间的传递不用耗时,判断两个邮局是否在一个国家的标准是两个邮局可以互相传递邮件
由于两个邮局可以互相传递邮件就是一个国家的,可以想到强连通,进行缩点操作,缩点过程中要同时维护新图的边权,会发现每个国家之间想要完成联系可以通过国内的各个邮局实现,时间代价不同,利用最短路的贪心思想,可以在过程中只保留国家之间最短的那条边
我是直接用了floyd,因为我感觉不会超时,可是超了,我不死心,我认为是哪里写错了,就乱改交了好多把,结果刚好1000ms飘过,题目要求的时间也是1000ms,我自己都不信,后来又交了几遍过的代码,又过不了了,估计是卡过去的,思路是对的,只要改成dijkstra 或者spfa就能很快过了,反正我rp不错,居然卡过了,无语的代码奉上
#include
#include
#include
#include
#include
#include
#include
#include
#include