MLE了
查看原帖
MLE了
213465
zhurunlin68楼主2021/10/7 17:30
#include<bits/stdc++.h>
using namespace std;
int num,n,k,m,s,t,a[105],c[105][105],d[10005][10005],minn=1000000005;
void dfs(int aa,int bb)
{
	if(num==0&&minn>bb) minn=bb; 
	else
	{
		for(int i=1;i<=n;i++)
	    {
		    if(a[i]!=a[aa]&&d[aa][a[i]]!=1&&i!=aa)
		    {
		    	num--;
		        dfs(i,bb+c[aa][i]);
		        num++;
		    }
		    
	    }
	}
	return ;
}
int main()
{
	cin>>n>>k>>m>>s>>t;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	for(int i=1;i<=k;i++)
		for(int j=1;j<=k;j++)
		{
			int x;
			cin>>x;
			if(x==1) d[i][j]=1;
		}
	for(int i=1;i<=m;i++)
	{
		int x,y,z;
		cin>>x>>y>>z;
		c[x][y]=z;
	}
	num=n;
	dfs(1,0);
	if(minn==1000000005) cout<<-1<<endl;
	else cout<<minn<<endl;
	return 0;
} 
2021/10/7 17:30
加载中...