Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.86 KB | None | 0 0
  1. //Bismillahir Rahmanir Rahim
  2. #include <iostream>
  3. #include <cstdio>
  4. #include <algorithm>
  5. #include <cmath>
  6. #include <cctype>
  7. #include <cstdlib>
  8. #include <vector>
  9. #include <string>
  10. #include <cstring>
  11. #include <queue>
  12. #include <set>
  13. #include <stack>
  14. #include <map>
  15. #include <sstream>
  16. using namespace std;
  17. long long ar[100005],pr[100005],visitpos[4][100005],visitneg[4][100005],totpos[100005],totneg[100005],done[5][100005],flag;
  18. vector<long long>adjpos[100005],adjneg[100005];
  19. long long dfs(long long curr)
  20. {
  21. //cout<<curr<<" ";
  22. long long a,s,d,f,g,h,j,k,l;
  23. done[flag][abs(curr)]=1;
  24. if(curr>0)
  25. {
  26. if(visitneg[flag][curr]) return 0;
  27. if(visitpos[flag][curr]) return 1;
  28. visitpos[flag][curr]=1;
  29. a=totpos[curr];
  30. for(s=0;s<a;s++)
  31. {
  32. d=adjpos[curr][s];
  33. f=dfs(-d);
  34. if(f==0) return 0;
  35. }
  36. return 1;
  37. }
  38. else
  39. {
  40. if(visitpos[flag][-curr]) return 0;
  41. if(visitneg[flag][-curr]) return 1;
  42. visitneg[flag][-curr]=1;
  43. a=totneg[-curr];
  44. for(s=0;s<a;s++)
  45. {
  46. d=adjneg[-curr][s];
  47. f=dfs(-d);
  48. if(f==0) return 0;
  49. }
  50. return 1;
  51. }
  52. }
  53. int main()
  54. {
  55. long long a,s,d,f,g,h,j,k,l,ss;
  56. cin>>a;
  57. for(ss=1;ss<=a;ss++)
  58. {
  59. cin>>s>>d;
  60. for(j=0;j<=s+2;j++)
  61. {
  62. adjpos[j].clear();
  63. adjneg[j].clear();
  64. totneg[j]=0;
  65. totpos[j]=0;
  66. visitpos[1][j]=0;
  67. visitneg[1][j]=0;
  68. visitpos[2][j]=0;
  69. visitneg[2][j]=0;
  70. done[1][j]=0;
  71. done[2][j]=0;
  72. }
  73. for(g=1;g<=d;g++)
  74. {
  75. scanf("%lld%lld",&ar[g],&pr[g]);
  76. if(ar[g]>0)
  77. {
  78. totpos[ar[g]]++;
  79. adjpos[abs(ar[g])].push_back(pr[g]);
  80. }
  81. else
  82. {
  83. totneg[-ar[g]]++;
  84. adjneg[abs(ar[g])].push_back(pr[g]);
  85. }
  86. swap(ar[g],pr[g]);
  87. if(ar[g]>0)
  88. {
  89. totpos[ar[g]]++;
  90. adjpos[abs(ar[g])].push_back(pr[g]);
  91. }
  92. else
  93. {
  94. totneg[-ar[g]]++;
  95. adjneg[abs(ar[g])].push_back(pr[g]);
  96. }
  97. }
  98. //cout<<"dkjs\n";
  99. k=1;
  100. for(l=1;l<=s;l++)
  101. {
  102. //cout<<l<<" jdvjsd\n";
  103. if(done[1][l] || done[2][l]) continue;
  104. flag=1;
  105. if(dfs(l)==0)
  106. {
  107. flag=2;
  108. if(dfs(-l)==0)
  109. {
  110. k=0;
  111. break;
  112. }
  113. }
  114. }
  115. if(k) printf("Case %lld: Yes\n",ss);
  116. else printf("Case %lld: No\n",ss);
  117. }
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement