旅游巴士可以用爆搜解吗?搜了一遍DFS全体MLE,可以剪枝吗?
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e4;
struct node{
int time,l=0;
int to[maxn*2+10];
}a[maxn+10];
int n,m,k,minn=114514;
int DFS(int now,int t){
if(now==n) return (t/k+1)*k;
int x;
for(int i=1;i<=a[now].l;i++){
x=t;
if(a[a[now].to[i]].time>t) x=a[a[now].to[i]].time;
minn=min(minn,DFS(a[now].to[i],x+1));
}
return 114514;
}
int main(){
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=m;i++){
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
a[x].to[++a[x].l]=y;
a[x].time=z;
}
DFS(1,0);
cout<<minn;
return 0;
}