fork download
  1. #pragma GCC optimize("Ofast")
  2. #pragma GCC optimize("unroll-loops")
  3. #pragma GCC optimize("inline")
  4. #include<bits/stdc++.h>
  5. using namespace std;
  6. void*wmem;
  7. char memarr[96000000];
  8. template<class T> inline void walloc1d(T **arr, int x, void **mem = &wmem){
  9. static int skip[16] = {0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
  10. (*mem) = (void*)( ((char*)(*mem)) + skip[((unsigned long long)(*mem)) & 15] );
  11. (*arr)=(T*)(*mem);
  12. (*mem)=((*arr)+x);
  13. }
  14. template<class T> inline void walloc1d(T **arr, int x1, int x2, void **mem = &wmem){
  15. walloc1d(arr, x2-x1, mem);
  16. (*arr) -= x1;
  17. }
  18. struct graph{
  19. int N;
  20. int*es;
  21. int**edge;
  22. void setDirectEdge(int N__, int M, int A[], int B[], void **mem = &wmem){
  23. int i;
  24. N = N__;
  25. walloc1d(&es, N, mem);
  26. walloc1d(&edge, N, mem);
  27. walloc1d(&edge[0], M, mem);
  28. for(i=(0);i<(N);i++){
  29. es[i] = 0;
  30. }
  31. for(i=(0);i<(M);i++){
  32. es[A[i]]++;
  33. }
  34. for(i=(0);i<(N);i++){
  35. walloc1d(&edge[i], es[i], mem);
  36. }
  37. for(i=(0);i<(N);i++){
  38. es[i] = 0;
  39. }
  40. for(i=(0);i<(M);i++){
  41. edge[A[i]][es[A[i]]++] = B[i];
  42. }
  43. }
  44. void getDist(int root, int res[], void *mem = wmem){
  45. int i;
  46. int j;
  47. int k;
  48. int*q;
  49. int s;
  50. int z;
  51. walloc1d(&q, N, &mem);
  52. for(i=(0);i<(N);i++){
  53. res[i]=-1;
  54. }
  55. res[root]=0;
  56. s=0;
  57. z=1;
  58. q[0]=root;
  59. while(z){
  60. i=q[s++];
  61. z--;
  62. for(j=(0);j<(es[i]);j++){
  63. k=edge[i][j];
  64. if(res[k]>=0){
  65. continue;
  66. }
  67. res[k]=res[i]+1;
  68. q[s+z++]=k;
  69. }
  70. }
  71. }
  72. int getDist(int a, int b, void *mem = wmem){
  73. int i;
  74. int j;
  75. int k;
  76. int*q;
  77. int s;
  78. int z;
  79. int*d;
  80. if(a==b){
  81. return 0;
  82. }
  83. walloc1d(&d, N, &mem);
  84. walloc1d(&q, N, &mem);
  85. for(i=(0);i<(N);i++){
  86. d[i] = -1;
  87. }
  88. d[a] = 0;
  89. s = 0;
  90. z = 1;
  91. q[0] = a;
  92. while(z){
  93. i = q[s++];
  94. z--;
  95. for(j=(0);j<(es[i]);j++){
  96. k = edge[i][j];
  97. if(d[k] >= 0){
  98. continue;
  99. }
  100. d[k] = d[i] + 1;
  101. if(k==b){
  102. return d[k];
  103. }
  104. q[s+z++] = k;
  105. }
  106. }
  107. return -1;
  108. }
  109. }
  110. ;
  111. template<class T, class S> inline int vec2arr(vector<T> &v, S arr[]){
  112. int i;
  113. int N = v.size();
  114. for(i=(0);i<(N);i++){
  115. arr[i] = v[i];
  116. }
  117. return N;
  118. }
  119. template<class T, class S1, class S2> inline int vec2arr(vector<vector<T>> &v, S1 arr1[], S2 arr2[]){
  120. int i;
  121. int N = v.size();
  122. for(i=(0);i<(N);i++){
  123. arr1[i] = v[i][0];
  124. arr2[i] = v[i][1];
  125. }
  126. return N;
  127. }
  128. template<class T, class S1, class S2, class S3> inline int vec2arr(vector<vector<T>> &v, S1 arr1[], S2 arr2[], S3 arr3[]){
  129. int i;
  130. int N = v.size();
  131. for(i=(0);i<(N);i++){
  132. arr1[i] = v[i][0];
  133. arr2[i] = v[i][1];
  134. arr3[i] = v[i][2];
  135. }
  136. return N;
  137. }
  138. #define main dummy_main
  139. int main(){
  140. wmem = memarr;
  141. return 0;
  142. }
  143. #undef main
  144. class Solution{
  145. public:
  146. int findChampion(int n, vector<vector<int>> &edges){
  147. int i;
  148. dummy_main();
  149. graph g;
  150. static int m;
  151. static int a[100000];
  152. static int b[100000];
  153. static int d[100000];
  154. m = vec2arr(edges, a, b);
  155. g.setDirectEdge(n,m,a,b);
  156. for(i=(0);i<(n);i++){
  157. g.getDist(i, d);
  158. int WKqLrJHZ;
  159. remove_reference<decltype(1)>::type QAAnbtfa;
  160. int om7Ebh6q = 0;
  161. if((0) > ((n)-1)){
  162. QAAnbtfa = 0;
  163. }
  164. else{
  165. for(WKqLrJHZ = 0; WKqLrJHZ <= (n)-1; WKqLrJHZ++){
  166. if(d[WKqLrJHZ]>=0){
  167. if(om7Ebh6q == 0){
  168. QAAnbtfa = 1;
  169. om7Ebh6q = 1;
  170. continue;
  171. }
  172. QAAnbtfa += 1;
  173. }
  174. }
  175. if(om7Ebh6q==0){
  176. QAAnbtfa = 0;
  177. }
  178. }
  179. if(QAAnbtfa== n){
  180. return i;
  181. }
  182. }
  183. return -1;
  184. }
  185. }
  186. ;
  187. // cLay version 20231031-1
  188.  
  189. // --- original code ---
  190. // #define main dummy_main
  191. // {}
  192. // #undef main
  193. //
  194. // class Solution {
  195. // public:
  196. // int findChampion(int n, VVI &edges) {
  197. // dummy_main();
  198. // graph g;
  199. // static int m, a[1d5], b[], d[];
  200. // m = vec2arr(edges, a, b);
  201. // g.setDirectEdge(n,m,a,b);
  202. // rep(i,n){
  203. // g.getDist(i, d);
  204. // if(sum[j,0,n @ d[j]>=0](1) == n) return i;
  205. // }
  206. // return -1;
  207. // }
  208. // };
  209.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
stdout
Standard output is empty