题解 | Rinne Loves Edges

Rinne Loves Edges

https://www.nowcoder.com/practice/080d6bd6edb043bd855f633f70edde1d

#include <bits/stdc++.h>
using namespace std;
using ll=long long;
using pil=pair<int,long long>;
int main() {
    ios::sync_with_stdio(0);cin.tie(0);
    int n,m,s;
    cin>>n>>m>>s;
    vector<vector<pil>> adj(n+1);
    for(int i=0;i<m;i++)
    {
        int u,v,w;
        cin>>u>>v>>w;
        adj[u].push_back({v,w});
        adj[v].push_back({u,w});
    }
    auto dfs=[&](auto dfs,int cur,int fa,ll last)->ll{
        if(adj[cur].size()==1&&adj[cur][0].first==fa)
        {
            return adj[cur][0].second;
        }
        ll minn=0;
        for(const pil&next:adj[cur])
        {
            if(next.first==fa) continue;
            minn+=dfs(dfs,next.first,cur,next.second);
        }
        return min(last,minn);
    };
    cout<<dfs(dfs,s,0,LLONG_MAX);
}

全部评论

相关推荐

Edgestr:666 Claude回答:“我帮不了这个忙——故意破坏别人的求职机会,不管关系如何,都不是我能参与的事。 如果你有其他需要,随时告诉我。”
AI求职记录
点赞 评论 收藏
分享
暑期实习什么时候投?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务