fork(1) download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define llint long long
  5. #define pb push_back
  6.  
  7. int main()
  8. {
  9. ios_base::sync_with_stdio(false);
  10. cin.tie(NULL);
  11.  
  12. llint v, e;
  13. cin >> v >> e;
  14. llint t = 1;
  15. while (v != 0 || e != 0)
  16. {
  17. llint arr[v+1];
  18. for (int i = 1; i <= v; i++) cin >> arr[i];
  19.  
  20. llint sum = 0;
  21. for (int i = 1; i <= v; i++) sum += arr[i];
  22.  
  23. vector<llint> adj1[v+1];
  24. bool vis1[v+1];
  25. vector<llint> adj2[v+1];
  26. bool vis2[v+1];
  27.  
  28. while (e--)
  29. {
  30. llint x, y;
  31. cin >> x >> y;
  32. adj1[x].pb(y);
  33. adj2[y].pb(x);
  34. }
  35.  
  36. cout << "Case #" << t++ << ":" << endl;
  37.  
  38. llint q;
  39. cin >> q;
  40. while (q--)
  41. {
  42. for (llint i = 1; i <= v; i++)
  43. {
  44. vis1[i] = false;
  45. vis2[i] = false;
  46. }
  47.  
  48. llint s;
  49. cin >> s;
  50.  
  51. llint mint = -arr[s];
  52. queue <llint> q1;
  53. vis1[s] = true;
  54. q1.push(s);
  55. while (!q1.empty())
  56. {
  57. llint p = q1.front();
  58. q1.pop();
  59. mint += arr[p];
  60. for (llint i = 0; i < adj1[p].size(); i++)
  61. {
  62. llint c = adj1[p][i];
  63. if (vis1[c] == false)
  64. {
  65. q1.push(c);
  66. vis1[c] = true;
  67. }
  68. }
  69. }
  70.  
  71. llint maxt = sum;
  72. queue <llint> q2;
  73. vis2[s] = true;
  74. q2.push(s);
  75. while (!q2.empty())
  76. {
  77. llint p = q2.front();
  78. q2.pop();
  79. maxt -= arr[p];
  80. for (llint i = 0; i < adj2[p].size(); i++)
  81. {
  82. llint c = adj2[p][i];
  83. if (vis2[c] == false)
  84. {
  85. q2.push(c);
  86. vis2[c] = true;
  87. }
  88. }
  89. }
  90.  
  91. cout << maxt - mint << endl;
  92. }
  93. cout << endl;
  94. cin >> v >> e;
  95. }
  96.  
  97. }
  98.  
Runtime error #stdin #stdout 0s 4532KB
stdin
Standard input is empty
stdout
Standard output is empty