1.codevs1961

/* dfs. f[i][j]表示是否能到第i个点时秒数为j */ #include<iostream> #include<ctime> #include<cstdlib> #include<cstdio> #include<cstring> #define N 10001 using namespace std; int head[N],f[N][60]; int n,m,ans,cnt,now; struct edge { int u,v,w,next; }e[N<<1]; inline void add(int u,int v,int w) { e[++cnt].v=v;e[cnt].w=w;e[cnt].next=head[u];head[u]=cnt; } void dfs(int x,int sum) { sum=(sum+60)%60; if(f[x][sum]) return; f[x][sum]=1; for(int i=head[x];i;i=e[i].next) dfs(e[i].v,(sum%60+e[i].w+60)%60); } int main() { int x,y,z; scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { scanf("%d%d%d",&x,&y,&z); add(x,y,z);add(y,x,z); }dfs(1,0); for(int i=0;i<=60;i++) { if(f[2][i]) { if(i<10) printf("0"); printf("%d ",i); return 0; } } printf("60 "); return 0; }