40pts求调
查看原帖
40pts求调
1771965
tuxiaolai楼主2025/7/29 09:12
#include <bits/stdc++.h>
using namespace std;
struct Node {
    int v,d;
};
int n;
int k,v,d;
int a;
vector<Node> adj[20010];
//vector<Node> son[20010];
bool vis[20010];
//int sd[20010];
int ans;
int dfs(int p) {
    int res=0;
    for(auto i:adj[p]) {
        if(vis[i.v]) {
            continue;
        }
        vis[i.v]=1;
        int df=dfs(i.v);
        if(df+i.d>=a) {
            ans++;
            res=-1;
        }
        res=(res==-1) ? -1 : max(res,df+i.d);
    }
    cout<<p<<':'<<((res==-1) ? 0 : res)<<'\n';//c
    return (res==-1) ? 0 : res;
}
int md=0;
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin>>n;
    for(int i=1; i<=n; i++) {
        cin>>k;
        while(k--) {
            cin>>v>>d;
            md=max(md,d);
            adj[i].push_back({v,d});
        }
    }
    cin>>a;
    if(md>=a){
        cout<<"No solution.";
        return 0;
    }
    vis[1]=1;
    dfs(1);
    cout<<ans;
    return 0;
}
2025/7/29 09:12
加载中...