如果一个完成一个请求之后,可以继续完成下一个请求,那两个请求的所隔时间必须要大于等于两个节点之间的最短路径。先求出最短路径,然后以请求为节点建有向图,那么这个图的最小路径覆盖就是所求的答案。
一开始路径长度上限开太大都快t成sb了。。。
#include
#include
#include
#include
#include
using namespace std; #define clr(a) memset(a,0,sizeof(a)) typedef long long ll; const ll up=LLONG_MAX>>6; struct edg{int v,nx;}gp[500010]; struct bi{int q;ll t;}qi[1010]; bool bimp(const bi&a,const bi&b){return a.t
=dmt[qi[i].q][qi[j].q]) psh(i,j); } return q-hry(); }; int main(){ #ifndef ONLINE_JUDGE freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); #endif int t,f;scanf("%d",&f); for(t=1;t<=f;printf("Case %d: %d\n",t++,solve()-1)); return 0; };