fork download
  1. const fi='';
  2. nmax=1000000;
  3. mmax=400000;
  4.  
  5. type data=longint;
  6. var
  7. f:text;
  8. adj,x,y:array[0..mmax+1] of data;
  9. head:array[0..nmax+1] of data;
  10. sl:array[0..nmax+1] of int64;
  11. low,num,tr:array[0..nmax+1] of data;
  12. n,m,dinh,lab,sl1,res,khop,cau:int64;
  13.  
  14. procedure docfile;
  15. var i,j:data;
  16. begin
  17. assign(f,fi); reset(f);
  18. read(f,n,m);
  19. for i:=0 to n+1 do
  20. head[i]:=0;
  21. for i:=1 to m do
  22. begin
  23. read(f,x[i],y[i]);
  24. inc(head[x[i]]);
  25. inc(head[y[i]]);
  26. end;
  27. for i:=1 to n+1 do
  28. head[i]:=head[i-1]+head[i];
  29. for i:=1 to m do
  30. begin
  31. adj[head[x[i]]]:=y[i];
  32. dec(head[x[i]]);
  33. adj[head[y[i]]]:=x[i];
  34. dec(head[y[i]]);
  35. end;
  36. close(f);
  37.  
  38.  
  39. end;
  40.  
  41. function min(a,b:data):data;
  42. begin
  43. if a<b then exit(a); exit(b);
  44. end;
  45.  
  46. procedure dfs(u:data);
  47. var v,k,i:data;
  48. s:boolean;
  49. begin
  50. inc(lab);
  51. low[u]:=lab;
  52. num[u]:=lab;
  53. k:=0;
  54. sl[u]:=1;
  55. s:=false;
  56. for v:=head[u]+1 to head[u+1] do
  57. if tr[u]<>adj[v] then
  58. begin
  59. if num[adj[v]]=0 then
  60. begin
  61. tr[adj[v]]:=u;
  62. inc(k);
  63. dfs(adj[v]);
  64. if low[adj[v]]>=num[u] then
  65. s:=true;
  66. sl[u]:=sl[adj[v]]+sl[u];
  67. low[u]:=min(low[u],low[adj[v]]);
  68. end
  69. else
  70. low[u]:=min(low[u],num[adj[v]]);
  71. end;
  72. if ((s and (tr[u]<>0)) or ((tr[u]=0) and (k>1))) then inc(khop);
  73. if (Low[u]=num[u]) and (tr[u]<>0) then inc(cau);
  74. end;
  75.  
  76. procedure ddfs(u:data);
  77. var
  78. v:data;
  79. begin
  80. inc(dinh);
  81. num[u]:=1;
  82. for v:=head[u]+1 to head[u+1] do
  83. if num[adj[v]]=0 then
  84. ddfs(adj[v]);
  85. end;
  86.  
  87. procedure xuli;
  88. var i,j:data;
  89. stplt:int64;
  90. begin
  91. for i:=1 to n do
  92. num[i]:=0;
  93. stplt:=0;
  94. sl1:=0;
  95. for i:=1 to n do
  96. if num[i]=0 then
  97. begin
  98. dinh:=0;
  99. ddfs(i);
  100. if sl1=0 then
  101. sl1:=dinh;
  102. inc(stplt);
  103. end;
  104. if stplt>2 then
  105. begin
  106. writeln('0');
  107. exit;
  108. end;
  109. for i:=1 to n do
  110. num[i]:=0;
  111. tr:=num;
  112.  
  113. cau:=0;
  114. khop:=0;
  115. lab:=0;
  116. for i:=1 to n do
  117. if num[i]=0 then
  118. dfs(i);
  119. if stplt=1 then
  120. begin
  121. res:=(m-cau)*((n*(n-1)) div 2 - m);
  122. for i:=2 to n do
  123. if low[i]=num[i] then
  124. res:=res+int64(sl[i])*(int64(n-sl[i]))-1;
  125. writeln(res);
  126. exit;
  127. end;
  128. if stplt=2 then
  129. begin
  130. res:=(m-cau)*sl1*(n-sl1);
  131. writeln(res);
  132. end;
  133. end;
  134.  
  135. begin
  136. docfile;
  137. xuli;
  138. end.
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.pas:1: warning: missing program header
prog.pas:10: error: unknown identifier `int64'
prog.pas:12: error: unknown identifier `int64'
prog.pas: In procedure `docfile':
prog.pas:18: error: undeclared identifier `n' (first use in this routine)
prog.pas:18: error:  (Each undeclared identifier is reported only once
prog.pas:18: error:  for each routine it appears in.)
prog.pas:18: error: undeclared identifier `m' (first use in this routine)
prog.pas: In function `min':
prog.pas:43: error: invalid argument `a' to `Exit'
prog.pas:43: error: invalid argument `b' to `Exit'
prog.pas:44: error: result of function `min' not assigned
prog.pas: In procedure `dfs':
prog.pas:50: error: undeclared identifier `lab' (first use in this routine)
prog.pas:54: error: undeclared identifier `sl' (first use in this routine)
prog.pas:72: error: undeclared identifier `khop' (first use in this routine)
prog.pas:73: error: undeclared identifier `cau' (first use in this routine)
prog.pas: In procedure `ddfs':
prog.pas:80: error: undeclared identifier `dinh' (first use in this routine)
prog.pas: In procedure `xuli':
prog.pas:89: error: unknown identifier `int64'
prog.pas:91: error: undeclared identifier `n' (first use in this routine)
prog.pas:93: error: undeclared identifier `stplt' (first use in this routine)
prog.pas:94: error: undeclared identifier `sl1' (first use in this routine)
prog.pas:98: error: undeclared identifier `dinh' (first use in this routine)
prog.pas:113: error: undeclared identifier `cau' (first use in this routine)
prog.pas:114: error: undeclared identifier `khop' (first use in this routine)
prog.pas:115: error: undeclared identifier `lab' (first use in this routine)
prog.pas:121: error: undeclared identifier `res' (first use in this routine)
prog.pas:121: error: undeclared identifier `m' (first use in this routine)
prog.pas:124: error: undeclared identifier `int64' (first use in this routine)
prog.pas:124: error: undeclared identifier `sl' (first use in this routine)
stdout
Standard output is empty