能帮忙看看思路问题吗 谢谢 玄关
查看原帖
能帮忙看看思路问题吗 谢谢 玄关
691036
Oye0ye楼主2023/11/4 15:01
#include<bits/stdc++.h>
using namespace std;
const int N=20005;
int d[N],e[N],ne[N],maxn=-1000,ans=0x3f3f3f3f,idx,h[N],a[N],n,m,k,st[N][N];
void add(int aa,int b,int c)
{
	e[idx]=b;
	a[idx]=c;
	ne[idx]=h[aa];
	h[aa]=idx++;
}
void ddfs(int kk,int u)
{
	if(u==n)
	{
		if(kk%k==0 and ans>kk)
		{
			ans=kk;
			return;	
		}
	}
	for(int i=h[u];i!=-1;i=ne[i])
	{
		int j=e[i],x=a[i];
		if(!st[u][i])
		{
			st[u][i]=1;
			ddfs(kk+1,j);
			st[u][i]=0;
		}
	}
}
int main()
{
//	freopen("bus.in","r",stdin);
//	freopen("bus.out","w",stdout);
	memset(h,-1,sizeof(h));
	cin>>n>>m>>k;
	for(int i=1;i<=m;i++)
	{
		int u,v,au;
		cin>>u>>v>>au;
		add(u,v,au);
        maxn=max(maxn,au);
	}
	ddfs(0,1);
   // for(int i=0;i<=maxn;i+=k)
    //{
	  //  ddfs(i,1);
    //}
	if(ans==0x3f3f3f3f)cout<<-1;
	else cout<<ans;
	return 0;
}
2023/11/4 15:01
加载中...