Submission #932522
Source Code Expand
#include <bits/stdc++.h> using namespace std; const int mod = 1e9 + 7; const int N = 50; int n, m, K; vector<int> g[N]; int low[N], ord[N]; stack<pair<int, int>> stk; vector<vector<pair<int, int>>> cc; int gcd(int x, int y) { if (y == 0) return x; return gcd(y, x % y); } int add(int x, int y) { x += y; return x >= mod ? x - mod : x; } int mul(int x, int y) { return int64_t(x) * y % mod; } int modpow(int a, long long b) { if (b == 0) return 1; return mul(modpow(mul(a, a), b / 2), b & 1 ? a : 1); } int modinv(int a) { return modpow(a, mod - 2); } void dfs(int u, int p, int &k) { low[u] = ord[u] = k++; for (int v : g[u]) { if (ord[v] == -1) { stk.emplace(u, v); dfs(v, u, k); low[u] = min(low[u], low[v]); if (p == -1 || ord[u] <= low[v]) { cc.push_back(vector<pair<int, int>>()); while (!stk.empty()) { auto e = stk.top(); stk.pop(); cc.back().emplace_back(e); if (e.first == u) break; } } } else if (v != p && ord[v] < ord[u]) { stk.emplace(u, v); low[u] = min(low[u], ord[v]); } } } int main() { cin >> n >> m >> K; for (int i = 0; i < m; i++) { int u, v; scanf("%d %d", &u, &v); u--; v--; g[u].push_back(v); g[v].push_back(u); } memset(ord, -1, sizeof(ord)); int k = 0; for (int i = 0; i < n; i++) { if (ord[i] == -1) dfs(i, -1, k); } static int C[500][500]; for (int i = 0; i < 500; i++) { for (int j = 0; j <= i; j++) { if (i == 0 || j == 0) C[i][j] = 1; else C[i][j] = add(C[i - 1][j - 1], C[i - 1][j]); } } int ans = 1; for (auto c : cc) { int m = c.size(); if (m == 1) { ans = mul(ans, K); continue; } set<int> vs; for (auto e : c) { vs.insert(e.first); vs.insert(e.second); } if (m == vs.size()) { int sum = 0; for (int i = 0; i < m; i++) { sum = add(sum, modpow(K, gcd(m, i))); } sum = mul(sum, modinv(m)); ans = mul(ans, sum); } else { // H(k,m)=C(k+m-1,m) ans = mul(ans, C[K + m - 1][m]); } } cout << ans << endl; }
Submission Info
Submission Time | |
---|---|
Task | F - Painting Graphs with AtCoDeer |
User | pekempey |
Language | C++14 (GCC 5.4.1) |
Score | 1300 |
Code Size | 2133 Byte |
Status | AC |
Exec Time | 4 ms |
Memory | 1280 KB |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:66:25: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%d %d", &u, &v); ^
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 1300 / 1300 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | 0_000.txt, 0_001.txt, 0_002.txt |
All | 0_000.txt, 0_001.txt, 0_002.txt, 1_003.txt, 1_004.txt, 1_005.txt, 1_006.txt, 1_007.txt, 1_008.txt, 1_009.txt, 1_010.txt, 1_011.txt, 1_012.txt, 1_013.txt, 1_014.txt, 1_015.txt, 1_016.txt, 1_017.txt, 1_018.txt, 1_019.txt, 1_020.txt, 1_021.txt, 1_022.txt, 1_023.txt, 1_024.txt, 1_025.txt, 1_026.txt, 1_027.txt, 1_028.txt, 1_029.txt, 1_030.txt, 1_031.txt, 1_032.txt, 1_033.txt, 1_034.txt, 1_035.txt, 1_036.txt, 1_037.txt, 1_038.txt, 1_039.txt, 1_040.txt, 1_041.txt, 1_042.txt, 1_043.txt, 1_044.txt, 1_045.txt, 1_046.txt, 1_047.txt, 1_048.txt, 1_049.txt, 1_050.txt, 1_051.txt, 1_052.txt, 1_053.txt, 1_054.txt, 1_055.txt, 1_056.txt, 1_057.txt, 1_058.txt, 1_059.txt, 1_060.txt, 1_061.txt, 1_062.txt, 1_063.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
0_000.txt | AC | 4 ms | 1280 KB |
0_001.txt | AC | 4 ms | 1280 KB |
0_002.txt | AC | 4 ms | 1280 KB |
1_003.txt | AC | 4 ms | 1280 KB |
1_004.txt | AC | 4 ms | 1280 KB |
1_005.txt | AC | 4 ms | 1280 KB |
1_006.txt | AC | 4 ms | 1280 KB |
1_007.txt | AC | 4 ms | 1280 KB |
1_008.txt | AC | 4 ms | 1280 KB |
1_009.txt | AC | 4 ms | 1280 KB |
1_010.txt | AC | 4 ms | 1280 KB |
1_011.txt | AC | 4 ms | 1280 KB |
1_012.txt | AC | 4 ms | 1280 KB |
1_013.txt | AC | 4 ms | 1280 KB |
1_014.txt | AC | 4 ms | 1280 KB |
1_015.txt | AC | 4 ms | 1280 KB |
1_016.txt | AC | 4 ms | 1280 KB |
1_017.txt | AC | 4 ms | 1280 KB |
1_018.txt | AC | 4 ms | 1280 KB |
1_019.txt | AC | 4 ms | 1280 KB |
1_020.txt | AC | 4 ms | 1280 KB |
1_021.txt | AC | 4 ms | 1280 KB |
1_022.txt | AC | 4 ms | 1280 KB |
1_023.txt | AC | 4 ms | 1280 KB |
1_024.txt | AC | 4 ms | 1280 KB |
1_025.txt | AC | 4 ms | 1280 KB |
1_026.txt | AC | 4 ms | 1280 KB |
1_027.txt | AC | 4 ms | 1280 KB |
1_028.txt | AC | 4 ms | 1280 KB |
1_029.txt | AC | 4 ms | 1280 KB |
1_030.txt | AC | 4 ms | 1280 KB |
1_031.txt | AC | 4 ms | 1280 KB |
1_032.txt | AC | 4 ms | 1280 KB |
1_033.txt | AC | 4 ms | 1280 KB |
1_034.txt | AC | 4 ms | 1280 KB |
1_035.txt | AC | 4 ms | 1280 KB |
1_036.txt | AC | 4 ms | 1280 KB |
1_037.txt | AC | 4 ms | 1280 KB |
1_038.txt | AC | 4 ms | 1280 KB |
1_039.txt | AC | 4 ms | 1280 KB |
1_040.txt | AC | 4 ms | 1280 KB |
1_041.txt | AC | 4 ms | 1280 KB |
1_042.txt | AC | 4 ms | 1280 KB |
1_043.txt | AC | 4 ms | 1280 KB |
1_044.txt | AC | 4 ms | 1280 KB |
1_045.txt | AC | 4 ms | 1280 KB |
1_046.txt | AC | 4 ms | 1280 KB |
1_047.txt | AC | 4 ms | 1280 KB |
1_048.txt | AC | 4 ms | 1280 KB |
1_049.txt | AC | 4 ms | 1280 KB |
1_050.txt | AC | 4 ms | 1280 KB |
1_051.txt | AC | 4 ms | 1280 KB |
1_052.txt | AC | 4 ms | 1280 KB |
1_053.txt | AC | 4 ms | 1280 KB |
1_054.txt | AC | 4 ms | 1280 KB |
1_055.txt | AC | 4 ms | 1280 KB |
1_056.txt | AC | 4 ms | 1280 KB |
1_057.txt | AC | 4 ms | 1280 KB |
1_058.txt | AC | 4 ms | 1280 KB |
1_059.txt | AC | 4 ms | 1280 KB |
1_060.txt | AC | 4 ms | 1280 KB |
1_061.txt | AC | 4 ms | 1280 KB |
1_062.txt | AC | 4 ms | 1280 KB |
1_063.txt | AC | 4 ms | 1280 KB |