#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e3 + 10;
vector<pair<int, int>> adj[maxn];
vector<int> find_reachable(vector<int> r, vector<int> u, vector<int> v, vector<int> c) {
int n = r.size(), m = u.size();
for( int i = 0; i < m; i++ ){
adj[u[i]].push_back({ v[i], c[i] });
adj[v[i]].push_back({ u[i], c[i] });
}
int mini = n;
vector<int> resp(n);
auto bfs = [&]( int source ){
vector<int> key(n), marc(n);
vector<vector<int>> aux(n);
queue<int> fila;
marc[source] = true;
fila.push(source);
int cont = 0;
while( !fila.empty() ){
int cur = fila.front(); fila.pop();
if( !key[r[cur]] ) for( int x : aux[r[cur]] ) if( !marc[x] ) fila.push(x), marc[x] = true;
key[r[cur]] = true;
cont++;
for( auto [viz, id] : adj[cur] ) if( !marc[viz] ){
if( key[id] ){ marc[viz] = true; fila.push(viz); }
else aux[id].push_back(viz);
}
}
return cont;
};
for( int i = 0; i < n; i++ ){
int x = bfs(i);
if( x < mini ){
fill( resp.begin(), resp.end(), 0 );
mini = x;
}
if( x == mini ) resp[i] = 1;
}
return resp;
}
# | 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... |