奇怪,样例的最多雷数能输出但不能输出路径
查看原帖
奇怪,样例的最多雷数能输出但不能输出路径
897873
lwthree楼主2023/10/14 11:09
#include <bits/stdc++.h>
using namespace std;

int n;
int bombs[25];
int mapp[25][25];
int vis[25];
int res[25];
int now=0;
int sum=0;
int maxx=0;
int maxxres[25];

void dfs(int pos){
    int could=0;
    for (int i=1;i<=n;i++){
        if (mapp[pos][i]&&!vis[i]){
            could++;
            vis[i]=1;
            res[++now]=i;
            sum+=bombs[i];
            dfs(i);
            vis[i]=0;
            res[--now]=0;
            sum-=bombs[i];
        }
    }
    if (!could){
        if (sum>maxx){
            maxx=sum;
            copy(begin(res),end(res),begin(maxxres));
        }
        return;
    }
}

int main(){
    cin>>n;
    for(int i=1;i<=n;i++)cin>>bombs[i];
    for(int i=1;i<=n;i++)for(int j=i+1;j<=n;j++)cin>>mapp[i][j];
    for(int i=1;i<=n;i++){
        vis[i]=1;
        res[++now]=i;
        sum+=bombs[i];
        dfs(i);
        vis[i]=0;
        res[--now]=i;
        sum-=bombs[i];
    }
    int i=1;
    while (maxxres[i]){
        cout<<maxxres[i]<<' ';
        i++;
    }
    cout<<endl<<maxx;
    return 0;
}
2023/10/14 11:09
加载中...