Advertisement
Merevoli

Untitled

Dec 11th, 2021
987
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. const int MAX_N = 1e5 + 7;
  5. const long long MOD = 1e9 + 7;
  6. vector <int> a[MAX_N];
  7. int Free[MAX_N];
  8.  
  9. int bfs(int s){
  10.     queue <int> Q;
  11.     Q.push(s);
  12.     Free[s] = 1;
  13.     int t = 1;
  14.  
  15.     while (!Q.empty()){
  16.         int u = Q.front();
  17.         Q.pop();
  18.  
  19.         for (int i=0; i<a[u].size(); i++){
  20.             int v = a[u][i];
  21.             if (Free[v] == 0){
  22.                 Free[v] = 1;
  23.                 Q.push(v);
  24.                 t++;
  25.             }
  26.         }
  27.     }
  28.  
  29.     return t;
  30. }
  31.  
  32. long long giaithua(int e){
  33.     long long product = 1;
  34.     for (int i=2; i<=e; i++){
  35.         product *= i;
  36.         product %= MOD;
  37.     }
  38.     return product;
  39. }
  40.  
  41. int main(){
  42. //    freopen("input.txt", "r", stdin);
  43. //    freopen("output.txt", "w", stdout);
  44.  
  45.     int n, m;
  46.     cin >> n >> m;
  47.  
  48.     int u, v;
  49.     for (int i=1; i<=m; i++){
  50.         cin >> u >> v;
  51.         a[u].push_back(v);
  52.         a[v].push_back(u);
  53.     }
  54.  
  55.     long long res = 0;
  56.     for (int i=0; i<n; i++){
  57.         if (Free[i] == 0){
  58.             int T = bfs(i);
  59. //            cout << i << ' ' << T << '\n';
  60.             if (T > 2){
  61.                 res += giaithua(T);
  62.                 res %= MOD;
  63.             }
  64.         }
  65.     }
  66.  
  67.     cout << res << '\n';
  68. }
  69.  
Advertisement
RAW Paste Data Copied
Advertisement