50pts求助
查看原帖
50pts求助
1107997
chenxumin1017楼主2024/8/6 15:07
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 2e6 + 5;
struct Node{
  int x, w;
};
int n, m, ans, v2[N];
vector<Node> v[N];
void dfs(int x, int fa, int vis){
  int vv = 0;
  for(Node i : v[x]){
    if(i.x != fa)vv = max(vv, i.w);
  }
  if(vv >= m){
    cout << "No solution." << '\n';
    exit(0);
  }
  if(vv >= vis){
    vis = m;
    ans++;
  }
  for(Node i : v[x]){
    if(i.x != fa){
      dfs(i.x, x, vis - i.w);
    }
  }
}
signed main(){
  cin >> n;
  for(int i = 1, k; i <= n; i++){
    cin >> k;
    for(int j = 1, x, y; j <= k; j++){
      cin >> x >> y;
      v[i].push_back({x, y});
    }
  }
  cin >> m;
  dfs(1, 0, m);
  cout << ans << '\n';
  return 0;
}
2024/8/6 15:07
加载中...