#19到#25全部MLE,求大佬看看
查看原帖
#19到#25全部MLE,求大佬看看
1030559
tzzl3035楼主2025/8/5 17:39

RT

#include <bits/stdc++.h>

using uui = unsigned int;
using lli = long long;
using uli = unsigned long long;
using ddf = double;
using ldf = long double;

int main() {
  std::ios::sync_with_stdio(0);
  std::cin.tie(nullptr);

  int n, m; std::cin >> n >> m;
  std::vector<std::vector<int>> gph(n+3);
  for(int i = 0; i < m; ++i) {
    int a, b, s, t;
    std::cin >> a >> b >> s >> t;
    if(s == t) continue;
    gph[a].emplace_back(b);
    gph[b].emplace_back(a);
  }
  for(int i = 1; i <= n; ++i) {
    if(gph[i].size() & 1) {
      std::cout << "NIE";
      return 0;
    }
  }
  std::stack<int> stk; std::vector<bool> sig(n+3, 0);
  std::vector<std::vector<int>> ans;
  std::map<std::pair<int, int>, bool> vis;
  auto dfs = [&](auto &f, int x) -> void {
    auto tmp = gph[x];
    // std::cout << "x: " << x << '\n';
    for(auto i: tmp) {
      if(vis[{x, i}]) continue;
      vis[{x, i}] = vis[{i, x}] = 1;
      // std::cout << "i: " << i << '\n' ;
      f(f, i);
    }
    if(sig[x]) {
      // std::cout << "haha x: " << x << '\n';
      std::vector<int> vec;
      vec.emplace_back(x);
      for(; stk.top() != x; stk.pop()) {
        sig[stk.top()] = 0;
        vec.emplace_back(stk.top());
      }
      stk.pop();
      sig[x] = 0;
      vec.emplace_back(x); ans.push_back(vec);
      // for(auto i: vec) std::cout << i << '\n';
      // std::cout << '\n';
    }
    stk.push(x), sig[x] = 1;
  };
  for(int i = 1; i <= n; ++i) {
    dfs(dfs, i);
  }
  std::cout << ans.size() << '\n';
  for(auto i: ans) {
    std::cout << i.size() - 1 << ' ';
    for(auto j: i) std::cout << j << ' ';
    std::cout << '\n';
  }

}
2025/8/5 17:39
加载中...