关于吉吉王国的疑惑

求大佬解答,为什么我INF设为1e18的时候wa了,设为1e17的时候ac

代码如下:

#include<bits/stdc++.h>

#define all(x) x.begin(),x.end()

#define int long long

using namespace std;

const int N=1e3+5,INF=1e18,M=2e4+5;

int n,m,s; vector<pair<int,int>> e[N];

int f[N];

void dfs(int u,int fa,int limit)

{

int flag=0;

for(auto t: e[u])

{

int v=t.first,w=t.second;

if(v==fa) continue;

flag=1;

dfs(v,u,limit);

if(w<=limit)

f[u]+=min(f[v],w);

else

f[u]+=f[v];

}

int rear=(flag ? 0 : INF);

f[u]+=rear;

}

int check(int limit)

{

for(int i=1;i<=n;i++) f[i]=0;

dfs(1,0,limit);

if(f[1]>m) return 0;

else return 1;

}

signed main()

{

ios::sync_with_stdio(false);

cin.tie(0),cout.tie(0);

cin>>n>>m;

for(int i=1;i<n;i++)

{

int u,v,w; cin>>u>>v>>w;

e[u].push_back(make_pair(v,w)); e[v].push_back(make_pair(u,w));

}

int l=0,r=1e5,ans=-1;

while(l<=r)

{

int mid=l+r>>1;

if(check(mid))

{

ans=mid;

r=mid-1;

}

else

{

l=mid+1;

}

}

cout<<ans;

return 0;

}

全部评论

相关推荐

三年之期已到我的offer快到碗里来:9硕都比不上9本
点赞 评论 收藏
分享
shtdbb_:还不错,没有让你做了笔试再挂你
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务