QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#874481#856. Cactusasdfsdf#WA 7493ms10216kbC++231.5kb2025-01-28 07:27:202025-01-28 07:27:20

Judging History

你现在查看的是最新测评结果

  • [2025-01-28 07:27:20]
  • 评测
  • 测评结果:WA
  • 用时:7493ms
  • 内存:10216kb
  • [2025-01-28 07:27:20]
  • 提交

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();
}

Details

Tip: Click on the bar to expand more detailed information

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'