QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#874481 | #856. Cactus | asdfsdf# | WA | 7493ms | 10216kb | C++23 | 1.5kb | 2025-01-28 07:27:20 | 2025-01-28 07:27:20 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<pair<int, int>> st;
#define MAX 303030
#define MOD 1'000'000'007
vector<int> adj[MAX];
int dep[MAX];
int vis[MAX];
vector<int> ds;
void dfs(int x, int p = 0) {
vis[x] = 1;
for (auto v : adj[x]) {
if (p == v) continue;
if (vis[v]) {
if (dep[x] < dep[v]) ds.push_back(dep[v] - dep[x] + 1);
continue;
}
dep[v] = dep[x] + 1;
dfs(v, x);
}
}
ll dp[MAX];
ll mp[MAX];
ll mpow(ll x, ll y = MOD - 2) {
ll ans = 1;
ll mul = x;
int i;
for (i = 0; i <= 62; i++) {
if (y >> i & 1) ans = (ans * mul) % MOD;
mul = (mul * mul) % MOD;
}
return ans;
}
void solve() {
int N, M;
ll K;
cin >> N >> M >> K;
int i, a, b;
for (i = 1; i <= N; i++) adj[i].clear(), dep[i] = vis[i] = 0;
for (i = 1; i <= M; i++) {
cin >> a >> b;
adj[a].push_back(b);
adj[b].push_back(a);
}
dfs(1);
dp[1] = K;
dp[2] = K * (K - 1);
dp[2] %= MOD;
mp[0] = 1;
for (i = 1; i <= N; i++) {
mp[i] = mp[i - 1] * (K - 1);
mp[i] %= MOD;
}
for (i = 3; i <= N; i++) {
dp[i] = K * mp[i - 1] + (MOD - dp[i - 1]);
dp[i] %= MOD;
}
ll fac = (K - 1) * mpow(K);
fac %= MOD;
int sum = N;
ll ans = 1;
for (auto v : ds) {
ans = (ans * dp[v]) % MOD;
sum -= v;
}
ans *= mpow(K, sum);
ans %= MOD;
sum += ds.size();
ans *= mpow(fac, sum - 1);
ans %= MOD;
cout << ans << '\n';
}
signed main() {
ios::sync_with_stdio(false), cin.tie(0);
int T;
cin >> T;
while (T--) solve();
}
详细
Test #1:
score: 100
Accepted
time: 1ms
memory: 7912kb
input:
2 2 1 100 1 2 6 7 3 1 2 2 3 3 1 4 5 5 6 6 4 1 4
output:
9900 24
result:
ok 2 number(s): "9900 24"
Test #2:
score: -100
Wrong Answer
time: 7493ms
memory: 10216kb
input:
50000 9 10 4 4 7 5 2 1 5 7 3 9 6 8 3 3 2 9 1 4 8 6 2 10 11 4 4 1 1 3 5 1 10 9 8 4 1 6 7 9 7 10 8 1 1 9 10 2 10 10 4 7 5 6 9 5 1 9 7 10 9 4 9 5 10 2 3 3 7 3 8 9 10 4 3 9 3 7 5 4 6 2 1 9 6 5 4 2 9 8 5 1 7 8 9 9 4 9 4 4 1 6 3 8 7 2 9 6 7 1 8 6 9 5 2 10 11 4 7 8 6 2 9 10 7 2 2 4 4 7 3 7 3 1 10 6 6 9 5 1...
output:
15120 301583445 901231573 469795669 180957231 241276308 231814423 642419233 94946153 702455845 985800084 314400105 798800580 747526229 535754342 71508677 330185300 97133118 484429297 993079693 442906600 911188046 578650516 157301025 841956230 352751687 137002247 585996208 327538226 103384299 6892286...
result:
wrong answer 2nd numbers differ - expected: '34992', found: '301583445'