大佬求助!输出一直是零
查看原帖
大佬求助!输出一直是零
854939
Echordy楼主2023/2/23 20:00
#include <bits/stdc++.h>
using namespace std;
vector<int>mp[100004];
int num[100004];
int vis[100004];
vector<int>anspx;
int nu = 0,ans = 0;
int cnt = 0;
vector<int>rec;//
void dfs(int node)
{
    int len = mp[node].size();
    for(int i = 0; i < len; i++){
        if(!vis[node]){
            vis[node] = 1;
            nu += num[node];
            rec.push_back(node);            //rec[cnt++] = node;
            cnt++;
            //怎么判断到底了
            if(nu > ans){
                vector<int>anspx;
                ans = nu;
                for(int i = 0; i < cnt; i++)   anspx.push_back(rec[i]);
            }//ans = max(ans,nu);
            int nex = mp[node][i];
            dfs(nex);
            nu -= num[node];
            cnt--;      rec.pop_back();
            vis[node] = 0;
        }
    }
}
int main()
{
    int n;  cin >> n;
    for(int i = 1; i <= n; i++)     scanf("%d",&num[i]);
    for(int k = 1; k <= n-1; k++){      //地窖号
        for(int i = k+1; i <= n; i++){               //
            int pd;
            scanf("%d",&pd);
            if(pd){
                mp[k].push_back(i);
                //mp[i].push_back(k);
            }
        }
    }
    for(int i = 1; i <= n; i++){
        nu += num[i];
        vis[i] = 1;
        dfs(i);
        vis[i] = 0;
        nu = 0;
        vector<int>rec;
        cnt = 0;
    }
    for(int i = 0; i < anspx.size(); i++)  cout << anspx[i] << " ";
    cout << endl << ans <<endl;
}

2023/2/23 20:00
加载中...