Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Bismillahir Rahmanir Rahim
- #include <iostream>
- #include <cstdio>
- #include <algorithm>
- #include <cmath>
- #include <cctype>
- #include <cstdlib>
- #include <vector>
- #include <string>
- #include <cstring>
- #include <queue>
- #include <set>
- #include <stack>
- #include <map>
- #include <sstream>
- using namespace std;
- long long ar[100005],pr[100005],visitpos[4][100005],visitneg[4][100005],totpos[100005],totneg[100005],done[5][100005],flag;
- vector<long long>adjpos[100005],adjneg[100005];
- long long dfs(long long curr)
- {
- //cout<<curr<<" ";
- long long a,s,d,f,g,h,j,k,l;
- done[flag][abs(curr)]=1;
- if(curr>0)
- {
- if(visitneg[flag][curr]) return 0;
- if(visitpos[flag][curr]) return 1;
- visitpos[flag][curr]=1;
- a=totpos[curr];
- for(s=0;s<a;s++)
- {
- d=adjpos[curr][s];
- f=dfs(-d);
- if(f==0) return 0;
- }
- return 1;
- }
- else
- {
- if(visitpos[flag][-curr]) return 0;
- if(visitneg[flag][-curr]) return 1;
- visitneg[flag][-curr]=1;
- a=totneg[-curr];
- for(s=0;s<a;s++)
- {
- d=adjneg[-curr][s];
- f=dfs(-d);
- if(f==0) return 0;
- }
- return 1;
- }
- }
- int main()
- {
- long long a,s,d,f,g,h,j,k,l,ss;
- cin>>a;
- for(ss=1;ss<=a;ss++)
- {
- cin>>s>>d;
- for(j=0;j<=s+2;j++)
- {
- adjpos[j].clear();
- adjneg[j].clear();
- totneg[j]=0;
- totpos[j]=0;
- visitpos[1][j]=0;
- visitneg[1][j]=0;
- visitpos[2][j]=0;
- visitneg[2][j]=0;
- done[1][j]=0;
- done[2][j]=0;
- }
- for(g=1;g<=d;g++)
- {
- scanf("%lld%lld",&ar[g],&pr[g]);
- if(ar[g]>0)
- {
- totpos[ar[g]]++;
- adjpos[abs(ar[g])].push_back(pr[g]);
- }
- else
- {
- totneg[-ar[g]]++;
- adjneg[abs(ar[g])].push_back(pr[g]);
- }
- swap(ar[g],pr[g]);
- if(ar[g]>0)
- {
- totpos[ar[g]]++;
- adjpos[abs(ar[g])].push_back(pr[g]);
- }
- else
- {
- totneg[-ar[g]]++;
- adjneg[abs(ar[g])].push_back(pr[g]);
- }
- }
- //cout<<"dkjs\n";
- k=1;
- for(l=1;l<=s;l++)
- {
- //cout<<l<<" jdvjsd\n";
- if(done[1][l] || done[2][l]) continue;
- flag=1;
- if(dfs(l)==0)
- {
- flag=2;
- if(dfs(-l)==0)
- {
- k=0;
- break;
- }
- }
- }
- if(k) printf("Case %lld: Yes\n",ss);
- else printf("Case %lld: No\n",ss);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement