이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "train.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef vector<pii> vpi;
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define F0R(i,b) FOR(i,0,b)
#define ROF(i,a,b) for(int i=(b)-1;i>=(a);--i)
#define R0F(i,b) ROF(i,0,b)
#define all(x) begin(x),end(x)
#define sz(x) int(x.size())
#define pb push_back
#define rsz resize
#define trav(a,x) for(auto&a :x)
#define fi first
#define se second
int const N=5e3+3;
vi to[N];
vi tor[N];
vi r;
int n,m;
bitset<N> vis;
stack<int> s;
vi topsort;
void dfs(int now)
{
if(vis[now])return;
vis[now]=1;
trav(chi,to[now])
{
dfs(chi);
}
s.push(now);
}
void dfs2(int now)
{
if(vis[now])return;
vis[now]=1;
trav(chi,tor[now])
{
dfs2(chi);
}
topsort.pb(now);
}
void kos()
{
F0R(i,n)
{
dfs(i);
}
vis.reset();
while(!s.empty())
{
int u=s.top();
s.pop();
dfs2(u);
}
}
vi who_wins(vi a, vi r1, vi u, vi v) {
n=sz(a);
m=sz(u);
r=r1;
F0R(i,m)
{
to[u[i]].pb(v[i]);
tor[v[i]].pb(u[i]);
}
kos();
bool ok=0;
vi ans(n,1);
//trav(e,topsort)cerr<<e<<' ';
//cout<<'\n';
R0F(i,n)
{
if(r[topsort[i]])
{
ok=1;
}
ans[topsort[i]]=ok;
}
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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |