分別記錄每個廠商的上游是那些 然後掃過去就好了
記錄起來的話可以省點時間(?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #include<bits/stdc++.h> using namespace std; #define ull unsigned long long #define ll long long #define ld long double #define PB(x) push_back(x) #define MP(x,y) make_pair(x,y) #define pii pair<int,int> #define vint vector<int> #define rz(x) resize(x) #define X first #define Y second // #define m (l+r)/2 // #define xm (x1+x2)/2 // #define ym (y1+y2)/2 #define DE cout<<"de"<<endl; #define PQ priority_queue inline int rit(){ int t=0,k=1; char c; do{ c=getchar(); if(c=='-')k=-1; }while(c<'0'||c>'9'); do{ t=t*10+c-'0'; c=getchar(); }while(c>='0'&&c<='9'); return t*k; }; int n,m,l,q; vector<int> s[10002]; bool jizz[10002]; bool track(int y){ if(jizz[y])return 1; for(int i=0;i<(int)s[y].size();i++){ if(track(s[y][i])){return 1;} } return 0; } int main(){ n=rit(),m=rit(),l=rit(),q=rit(); for(int i=0;i<m;i++){ int a=rit(),b=rit(); s[b].PB(a); } for(int i=0;i<l;i++){ int x=rit(); jizz[x]=1; } for(int i=0;i<q;i++){ int y=rit(); if(track(y)){ cout<<"TUIHUOOOOOO\n"; } else{ cout<<"YA~~\n"; } } } |
沒有留言:
張貼留言