T

include <bits/stdc++.h>

using namespace std;

define ll long long

define ull unsigned long long

define db double

define all(x) x.begin(), x.end()

define inf (1 << 30)

define lnf (1LL << 60)

typedef pair<int, int> PII;
constexpr int N = 1e5 + 7;
constexpr int P = 998244353;

int n, m;
vector adj[N];

int dfn[N], low[N], idx;
bool ins[N];
stack stk;

vector<vector> scc;

void tarjan(int u) {
dfn[u] = low[u] = ++idx;
ins[u] = true;
stk.push(u);
for (auto v : adj[u]) {
if (!dfn[v]) {
tarjan(v);
low[u] = min(low[u], low[v]);
} else if (ins[v]) {
low[u] = min(low[u], dfn[v]);
}
}
if (dfn[u] == low[u]) {
vector c;
while (true) {
int v = stk.top();
stk.pop(); ins[v] = false;
c.push_back(v);
if (v == u) break;
}
sort(c.begin(), c.end());
scc.push_back(c);
}
}

int main() {
scanf("%d%d", &n, &m);
for (int i = 1; i <= m; i++) {
int u, v;
scanf("%d%d", &u, &v);
adj[u].push_back(v);
}
for (int i = 1; i <= n; i++) {
if (!dfn[i]) {
tarjan(i);
}
}
sort(scc.begin(), scc.end());
for (auto c : scc) {
for (auto v : c) printf("%d ", v);
puts("");
}
return 0;
}

posted @ 2026-08-18 17:29  AKCoder  阅读(5)  评论(0)    收藏  举报