暴力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;
}