fork download
  1. #include <bits/stdc++.h>
  2.  
  3. #define FOR(i, a, b) for (int i = a; i <= b; ++i)
  4. #define FORD(i, a, b) for (int i = a; i >= b; --i)
  5. #define ll long long
  6.  
  7. using namespace std;
  8.  
  9. const int N = 1e6 + 5;
  10. int a[N], n, type, m;
  11. int b[N], ans[N];
  12. pair <int, int> event[N];
  13.  
  14. void nhap() {
  15. cin >> type >> n >> m;
  16. FOR(i, 1, n) cin >> a[i];
  17. FOR(i, 1, m) cin >> event[i].first >> event[i].second;
  18. }
  19.  
  20. void sub1() {
  21. FOR(i, 1, n) ans[i] = a[i];
  22. FORD(i, m, 1) {
  23. auto [u, v] = event[i];
  24. if (ans[u] + ans[v] == 1) ans[u] = ans[v] = 0;
  25. }
  26. FOR(i, 1, n) cout << ans[i];
  27. }
  28.  
  29. void sub2() {
  30. FOR(i, 1, n) ans[i] = a[i];
  31. FORD(i, m, 1) {
  32. auto [u, v] = event[i];
  33. if (ans[u] + ans[v] == 1) ans[u] = ans[v] = 0;
  34. }
  35. FOR(i, 1, n) if (ans[i]) b[i] = i;
  36. FOR(i, 1, n) ans[i] = 1;
  37. FOR(i, 1, m) {
  38. auto [u, v] = event[i];
  39. if (b[u] != b[v]) {
  40. if (b[u] && b[v]) b[u] = b[v] = n + 1;
  41. else if (!b[u]) b[u] = b[v];
  42. else if (!b[v]) b[v] = b[u];
  43. }
  44. }
  45. FOR(i, 1, n) if (b[i] && b[i] <= n) ans[b[i]] = 0;
  46. FOR(i, 1, n) cout << ans[i];
  47. }
  48.  
  49. void giai() {
  50. if (type == 1) sub1();
  51. else sub2();
  52. }
  53.  
  54. int main() {
  55. ios_base::sync_with_stdio(0);
  56. cin.tie(0); cout.tie(0);
  57.  
  58. #define name "test"
  59.  
  60. if (fopen(name".inp", "r")) {
  61. freopen(name".inp", "r", stdin);
  62. freopen(name".out", "w", stdout);
  63. }
  64.  
  65. nhap();
  66. giai();
  67.  
  68. return 0;
  69. }
  70.  
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
Standard output is empty