#include #include #include #include #define MAXN 150 using namespace std; int n,m,ids,ide,ans; int br[MAXN][MAXN],dist[MAXN]; struct Node{ int g,y,r; }node[MAXN]; struct L{ int x,t; bool operator <(L othr)const{ if(x==othr.x)return tQ; Q.clear(); memset(dist,-1,sizeof(dist)); Q.insert((L){ids,5}); dist[ids]=5; set::iterator it; while(!Q.empty()){ it=Q.begin(); now=*it; Q.erase(it); for(int i=0;i=node[i].g+node[i].y)add=5+tot-res; if(i==ide&&(ans==-1||ans>nowtime))ans=nowtime; if(add+nowtimezz) br[xx][yy]=br[yy][xx]=zz; } ans=-1; SPFA(); int second=ans; int minute=second/60; second=second%60; printf("%d:%02d\n",minute,second); } }