#include "keys.h"
#include<bits/stdc++.h>
#define vi vector<int>
#define f0r(i,n) for(int i = 0; i<n; i++)
#define mp make_pair
#define pb push_back
#define FOR(i, k, n) for(int i = k; i<n; i++)
#define pii pair<int,int>
#define dout(x) cout<<x<<' '<<#x<<'\n';
#define vout(x) for(auto u : x)cout<<u<<' '; cout<<'\n';
#define vvi vector<vi>
#define vb vector<bool>
using namespace std;
std::vector<int> find_reachable(std::vector<int> r, std::vector<int> u, std::vector<int> v, std::vector<int> c) {
int n = r.size();
int m = u.size();
vi ans(n);
vvi adj(n);
f0r(i,m){
adj[u[i]].pb(v[i]);
adj[v[i]].pb(u[i]);
}
long long sum = accumulate(ans.begin(), ans.end(), 0LL);
vi ccsize;
vvi ccs;
vi cc(n);
int cur = 0;
vb vis(n);
f0r(i,n){
if(!vis[i]){
int sz = 1;
vis[i] = 1;
cc[i] = cur;
vi curcc; curcc.pb(i);
queue<int>q; q.push(i);
while(!q.empty()){
int node = q.front(); q.pop();
for(auto u : adj[node]){ if(vis[u])continue; vis[u] = 1; curcc.pb(u); cc[u] = cur; q.push(u); sz++; }
}
ccsize.pb(sz);
ccs.pb(curcc);
cur++;
}
}
if(sum == 0){
int mn = *min_element(ccsize.begin(), ccsize.end());
f0r(i,n){
if(ccsize[cc[i]] == mn)ans[i] = 1;
}
return ans;
}
else{
f0r(i,n)if(r[i] != 0 || ccsize[cc[i]] == 1)ans[i] = 1;
return ans;
}
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |