Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 100007;
- vector<int> g[N];
- int l[N],r[N];
- bool f[N];
- vector<int> tp;
- void dfs(int v){
- f[v]=true;
- for(int to:g[v]){
- if(f[to])continue;
- dfs(to);
- }
- tp.push_back(v);
- }
- int main(){
- // freopen("input.txt","r",stdin);
- int n;
- scanf("%d",&n);
- for(int i=1;i<=n;++i){
- scanf("%d %d",l+i,r+i);
- }
- int k;
- scanf("%d",&k);
- for(int i=1;i<=k;++i){
- int pos;
- int hw;
- scanf("%d %d",&pos,&hw);
- int lst=0;
- vector<int> vq;
- for(int j=0;j<hw;++j){
- int ps;
- scanf("%d",&ps);
- vq.push_back(ps);
- f[ps]=true;
- if(j){
- g[lst].push_back(ps);
- }
- lst=ps;
- }
- for(int j=1;j<=n;++j){
- if(f[j]==true)continue;
- if(l[j]<=pos&&pos<=r[j]){
- g[lst].push_back(j);
- }
- }
- for(int j=0;j<vq.size();++j)f[vq[j]]=false;
- }
- for(int i=1;i<=n;++i){
- if(f[i]==false)dfs(i);
- }
- for(int i=n-1;i>=0;i--){
- cout<<tp[i]<<" ";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement