关于吉吉王国的疑惑

求大佬解答,为什么我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;

}

全部评论

相关推荐

昨天 13:48
门头沟学院 C++
点赞 评论 收藏
分享
门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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