1 条题解
-
0
C++ :
#include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N = 2e5 + 10, MOD = 1e9 + 7; typedef long long LL; int n, m; int p[N]; int l[N], r[N]; int find(int x) { if (x != p[x]) p[x] = find(p[x]); return p[x]; } int main() { cin >> n >> m; for (int i = 1; i <= n; ++ i ) p[i] = i; while (m -- ) { int a, b; cin >> a >> b; if (r[a] == b && l[b] == a) continue; if (r[a] || l[b] || find(a) == find(b)) { cout << 0 << endl; return 0; } r[a] = b, l[b] = a; a = find(a), b = find(b); p[a] = b; } int res = 1, k = 1; for (int i = 1; i <= n; ++ i ) if (find(i) == i) res = (LL)res * k ++ % MOD; cout << res << endl; return 0; }
- 1
信息
- ID
- 737
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者