暴力25分!5个AC,14个RE,1个TLE
查看原帖
暴力25分!5个AC,14个RE,1个TLE
551894
lemon2021楼主2022/11/4 21:31

暴力25分!5个AC,14个RE,1个TLE

TLE很正常,但RE是什么回事?

#include<iostream>
using namespace std;
int n,m,k;
int map[10001][10001];
int a[10001];
bool v[10001];
bool flag=false;
int ans=0;
int sum=0;
void dfs(int t,int x,int y)
{
	if(x==6)
	{
		if(t==1)
		{
			if(y==4)
			{
				sum=max(sum,ans);
			}
		}
		return;
	}
	for(int i=1;i<=n;i++)
	{
		if(map[t][i]!=0&&map[t][i]<=k+1)
		{
			if(!v[i])
			{
				ans+=a[i];
				v[i]=true;
				if(i!=1)
				{
					dfs(i,x+1,y+1);
				}
				else
				{
					dfs(i,x+1,y);
			  }
			  ans-=a[i];
			  v[i]=false;
			}
			else
			{
				ans+=a[i];
				dfs(i,x+1,y);
				ans-=a[i];
			}
		}
	}
}
int main()
{
	cin>>n>>m>>k;
	for(int i=2;i<=n;i++)
	{
		cin>>a[i];
	}
	int t1;
	int t2;
	for(int i=1;i<=m;i++)
	{
		cin>>t1>>t2;
		map[t1][t2]=map[t2][t1]=1;
		for(int j=1;j<=m;j++)
		{
			if(map[t1][j]!=0)
			{
				if(map[j][t2]==0)
				{
					map[j][t2]=map[t2][j]=map[j][t1]+1;
				}
				else
				{
					map[j][t2]=min(map[j][t2],map[t1][j]+1);
				}
			}
			if(map[t2][j]!=0)
			{
				if(map[j][t1]==0)
				{
					map[j][t1]=map[t1][j]=map[j][t2]+1;
				}
				else
				{
					map[j][t1]=min(map[j][t1],map[t2][j]+1);
				}
			}
		}
	}
	dfs(1,1,0);
	cout<<sum;
	return 0;
}
2022/11/4 21:31
加载中...