이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
#define ll long long
#define ff first
#define ss second
using namespace std;
const int N = 222222;
vector<pair<int, int> > g[N];
int n, m;
std::vector<int> find_reachable(std::vector<int> r, std::vector<int> u, std::vector<int> v, std::vector<int> c)
{
std::vector<int> ans(r.size(), 1);
n = r.size();
m = u.size();
for (int i=0; i<m; i++)
{
g[v[i]].push_back({u[i], c[i]});
g[u[i]].push_back({v[i], c[i]});
}
stack<int> s;
bool used[N], ka[N];
int q, k[N];
for (int i=0; i<n; i++)
{
memset(used, 0, sizeof(used));
memset(ka, 0, sizeof(ka));
s.push(i);
while (s.size() > 0)
{
int i0 = s.top();
used[i0] = 1;
ka[r[i0]] = 1;
s.pop();
for (auto l:g[i0])
{
if (ka[l.ss] == 1 && used[l.ff] == 0) s.push(l.ff);
}
}
q = 0;
for (int i0=0; i0<n; i0++)
if (used[i0]) q++;
k[i] = q;
}
int mn = N * 100;
for (int i=0; i<n; i++) mn = min(k[i], mn);
for (int i=0; i<n; i++)
if (k[i] != mn) ans[i] = 0;
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... |