关于吉吉王国的疑惑

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

}

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-29 17:30
找实习找着找着就要进入7月了,马上秋招也要开始了,找实习还有意义吗?
绝迹的星:有面就面, 没面上就当日薪4位数大佬免费培训, 面上了再考虑要不要实习
点赞 评论 收藏
分享
争当牛马还争不上
码农索隆:1.把简历改哈 2.猛投,狠投 3.把基础打牢 这样你在有机会的时候,才能抓住
点赞 评论 收藏
分享
认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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