D. Toss a Coin to Your Graph…
解析在代码里,医保标准的二分答案题。 两个关键点: 1.在满足权值小于等于X时,搜索跑到循环里,满足题意要及时跳出; 2.记录走过的路径长,若是大于等于k,满足题意。
#include
#define endl '\n'
#define ll long long
using namespace std;
const int N=2e5+5;
int n,m,a[N],vis[N],cur[N];
ll k;
vectorg[N];
bool dfs(int i,int x) //判断在图中能否遍历k次
{
if(cur[i])
return 0;
vis[i]=1;
int res=0;
for(int v:g[i])
{
if(a[v]n>>m>>k;
for(int i=1;i>a[i];
for(int i=1;i>u>>v;
g[u].push_back(v);
}
int l=0,r=1e9,mid,ans=-1;
while(l>1;
for(int i=1;i>k;
int ans=0;
mp.clear();
cin>>(s+1);
for(int i=1;i'a')
{
if(mp[s[i]])
s[i]--;
else if(k)
mp[s[i]]=1,k--,s[i]--;
else break;
}
}
for(int i=1;i>k;
cin>>x>>y;
for(int i=1;ia[i];
for(int i=1;i>u>>v;
g[u].pb(v);g[v].pb(u);
}
dfs(x,0);
int ans=0;
while(y!=x)
ans++,vis[y]=1,y=fa[y];
vis[x]=1;
for(int i=1;i
关注
打赏