이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
#define fi first
#define se second
#define mp make_pair
#define fastIO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
const int N = 123456;
vector<int> T[N];
int par[N];
int S[N], E[N];
int ss[N], ee[N];
int tin[N];
int tout[N];
int ti;
void dfs(int u, int pp){
ti ++ ;
tin[u] = ti;
par[u] = pp;
for(auto x : T[u]){
if(x == pp) continue;
dfs(x, u);
}
tout[u] = ti;
}
bool is_par(int u, int v){
if(tin[u] <= tin[v] && tout[u] >= tout[v]) return true;
return false;
}
vector<int> G[N];
bool cycle;
int vis[N];
void dfs1(int u){
if(vis[u] == 1){
cycle = true;
return;
}
if(vis[u] == 2){
return;
}
vis[u] = 1;
for(auto x : G[u]){
dfs1(x);
}
vis[u] = 2;
}
void solve(){
int n, m;
cin >> n;
for(int i = 1; i <= n; i ++ ){
T[i].clear();
G[i].clear();
ss[i] = ee[i] = -1;
}
int u, v;
for(int i = 1; i < n; i ++ ){
cin >> u >> v;
T[u].push_back(v);
T[v].push_back(u);
}
ti = 0;
dfs(1, -1);
cin >> m;
for(int i = 1; i <= m ; i ++ ){
cin >> S[i] >> E[i];
ss[S[i]] = i;
ee[E[i]] = i;
}
int uu;
for(int iq = 1; iq <= m ; iq ++ ){
uu = S[iq];
while(!is_par(uu, E[iq])){
if(ss[uu] != -1 && ss[uu] != iq){
G[ss[uu]].push_back(iq);
}
if(ee[uu] != -1 && ee[uu] != iq){
G[iq].push_back(ee[uu]);
}
uu = par[uu];
}
if(ss[uu] != -1 && ss[uu] != iq){
G[ss[uu]].push_back(iq);
}
if(ee[uu] != -1 && ee[uu] != iq){
G[iq].push_back(ee[uu]);
}
uu = E[iq];
while(!is_par(uu, S[iq])){
if(ss[uu] != -1 && ss[uu] != iq){
G[ss[uu]].push_back(iq);
}
if(ee[uu] != -1 && ee[uu] != iq){
G[iq].push_back(ee[uu]);
}
uu = par[uu];
}
vis[iq] = 0;
}
cycle = false;
for(int i = 1; i <= m ; i ++ ){
if(vis[i] == 0){
dfs1(i);
}
}
if(!cycle){
cout << "Yes\n";
}
else{
cout << "No\n";
}
}
int main(){
fastIO;
//freopen("in.txt","r",stdin);
int tc;
cin >> tc;
for(int iq = 1; iq <= tc; iq ++ ){
solve();
}
return 0;
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |