154722025-02-19 19:46:11horkaLogisztikai központcpp17Részben helyes 38/50135ms22152 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int c=1e5+10;
int dp[c],n;
bool vis[c];
vector<array<int, 2>> adj[c];
void dfs1(int cs)
{
    vis[cs]=1;
    for(auto &[i,w]:adj[cs])
        if(!vis[i])
    {
        dfs1(i);
        dp[cs]=max(dp[cs],dp[i]+w);
    }
}
int maxi=1e15;
vector<int> ans;
void dfs2(int cs, int font)
{
    //cout<<cs<<" "<<font<<endl;
    vis[cs]=1;
    vector<array<int, 2>> gy;
    int tmp=max(font,dp[cs]);
    if(tmp<maxi)
    {
        ans.clear();
        maxi=tmp;
    }
    if(maxi==tmp) ans.push_back(cs);
    for(auto &[i,w]:adj[cs])
        if(!vis[i])
    {
        gy.push_back({dp[i]+w,i});
    }
    sort(gy.rbegin(),gy.rend());
    if(gy.empty()) return;
    for(auto &[i,w]:adj[cs])
        if(!vis[i])
    {
        int fent=font+w;
        if(i!=gy[0][1]) fent=max(fent,gy[0][0]+w);
        if(gy.size()>1 && i!=gy[1][1]) fent=max(fent,gy[1][0]+w);
        dfs2(i,fent);
    }
}
signed main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    cin>>n;
    for(int i=1; i<n; i++)
    {
        int a,b,c; cin>>a>>b>>c;
        adj[a].push_back({b,c});
        adj[b].push_back({a,c});
    }
    if(n==1)
    {
        cout<<"0\n1\n1\n";
        return 0;
    }
    if(n==2)
    {
        cout<<adj[1][0][1]<<"\n2\n1 2\n";
        return 0;
    }
    dfs1(1);
    for(int i=1; i<=n;i++)
        vis[i]=0;
    dfs2(1,0);
    cout<<maxi<<"\n"<<ans.size()<<"\n";
    for(int i:ans)
        cout<<i<<" ";
    cout<<"\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base38/50
1Elfogadva0/03ms2612 KiB
2Elfogadva0/094ms8052 KiB
3Elfogadva4/43ms2612 KiB
4Részben helyes2/43ms2612 KiB
5Elfogadva4/44ms2612 KiB
6Részben helyes2/43ms2612 KiB
7Részben helyes2/43ms2788 KiB
8Elfogadva5/54ms2728 KiB
9Elfogadva2/294ms8572 KiB
10Elfogadva2/296ms8804 KiB
11Részben helyes1/24ms2612 KiB
12Részben helyes1/24ms2868 KiB
13Elfogadva2/26ms2980 KiB
14Elfogadva2/29ms3380 KiB
15Elfogadva2/297ms8180 KiB
16Részben helyes1/286ms7732 KiB
17Elfogadva2/297ms8240 KiB
18Részben helyes1/257ms7004 KiB
19Elfogadva2/276ms10536 KiB
20Részben helyes1/3135ms22152 KiB