QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#497793#8729. Tikvanigreen_gold_dog#21 1ms3836kbC++202.5kb2024-07-29 18:02:302024-07-29 18:02:32

Judging History

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

  • [2024-07-29 18:02:32]
  • 评测
  • 测评结果:21
  • 用时:1ms
  • 内存:3836kb
  • [2024-07-29 18:02:30]
  • 提交

answer

//#pragma GCC optimize("Ofast")
//#pragma GCC target("avx,avx2,sse,sse2,sse3,ssse3,sse4,abm,popcnt,mmx")
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef double db;
typedef long double ldb;
typedef complex<double> cd;

constexpr ll INF64 = 9'000'000'000'000'000'000, INF32 = 2'000'000'000, MOD = 1'000'000'007;
constexpr db PI = acos(-1);
constexpr bool IS_FILE = false, IS_TEST_CASES = false;

random_device rd;
mt19937 rnd32(rd());
mt19937_64 rnd64(rd());

template<typename T>
bool assign_max(T& a, T b) {
	if (b > a) {
		a = b;
		return true;
	}
	return false;
}

template<typename T>
bool assign_min(T& a, T b) {
	if (b < a) {
		a = b;
		return true;
	}
	return false;
}

template<typename T>
T square(T a) {
	return a * a;
}

template<>
struct std::hash<pair<ll, ll>> {
	ll operator() (pair<ll, ll> p) const {
		return ((__int128)p.first * MOD + p.second) % INF64;
	}
};

void dfs(ll v, vector<vector<ll>>& g, vector<ll>& to, vector<bool>& used) {
	to.push_back(v);
	used[v] = true;
	for (auto i : g[v]) {
		if (!used[i]) {
			dfs(i, g, to, used);
		}
	}
}

struct DSU {
	vector<ll> p;
	DSU(ll n) {
		p.resize(n);
		for (ll i = 0; i < n; i++) {
			p[i] = i;
		}
	}
	ll get(ll v) {
		return (p[v] == v ? v : p[v] = get(p[v]));
	}
	void unite(ll a, ll b) {
		a = get(a);
		b = get(b);
		p[a] = b;
	}
};

void solve() {
	ll n, m;
	cin >> n >> m;
	vector<vector<ll>> g(n);
	for (ll i = 0; i < m; i++) {
		ll a, b;
		cin >> a >> b;
		a--;
		b--;
		g[a].push_back(b);
	}
	vector<vector<ll>> to(n);
	for (ll i = 0; i < n; i++) {
		vector<bool> used(n, false);
		dfs(i, g, to[i], used);
		sort(to[i].begin(), to[i].end());
	}
	ll p2 = 0;
	vector<vector<bool>> g2(n, vector<bool>(n, false));
	for (ll i = 0; i < n; i++) {
		for (ll j = 0; j < n; j++) {
			vector<ll> na(to[i].size() + to[j].size());
			merge(to[i].begin(), to[i].end(), to[j].begin(), to[j].end(), na.begin());
			for (ll k = 1; k < na.size(); k++) {
				if (na[k] == na[k - 1]) {
					g2[i][j] = true;
				}
			}
		}
	}
	for (ll i = 0; i < n; i++) {
		DSU d(n);
		for (auto j : g[i]) {
			for (auto k : g[i]) {
				if (g2[j][k]) {
					d.unite(j, k);
				}
			}
		}
		for (auto j : g[i]) {
			if (d.get(j) == j) {
				p2++;
			}
		}
	}
	ll ans = 1;
	for (ll i = 0; i < p2; i++) {
		ans *= 2;
		ans %= MOD;
	}
	cout << ans << '\n';
}

int main() {
	if (IS_FILE) {
		freopen("", "r", stdin);
		freopen("", "w", stdout);
	}
    	ios_base::sync_with_stdio(false);
    	cin.tie(0);
    	cout.tie(0);
	ll t = 1;
	if (IS_TEST_CASES) {
		cin >> t;
	}
	for (ll i = 0; i < t; i++) {
		solve();
	}
}

詳細信息

Subtask #1:

score: 21
Accepted

Test #1:

score: 21
Accepted
time: 0ms
memory: 3764kb

input:

6 5
3 5
2 5
1 6
4 6
2 6

output:

32

result:

ok 1 number(s): "32"

Test #2:

score: 21
Accepted
time: 0ms
memory: 3552kb

input:

6 6
2 5
1 2
3 4
5 6
3 6
1 5

output:

32

result:

ok 1 number(s): "32"

Test #3:

score: 21
Accepted
time: 0ms
memory: 3496kb

input:

6 7
3 6
1 3
3 5
2 3
1 6
2 6
2 5

output:

16

result:

ok 1 number(s): "16"

Test #4:

score: 21
Accepted
time: 0ms
memory: 3500kb

input:

6 8
1 4
2 3
5 6
3 6
4 5
2 6
4 6
1 5

output:

32

result:

ok 1 number(s): "32"

Test #5:

score: 21
Accepted
time: 0ms
memory: 3628kb

input:

6 7
1 4
3 6
2 3
1 5
2 4
2 6
5 6

output:

64

result:

ok 1 number(s): "64"

Test #6:

score: 21
Accepted
time: 0ms
memory: 3556kb

input:

6 8
2 3
2 4
2 5
3 6
1 6
1 2
1 4
1 5

output:

32

result:

ok 1 number(s): "32"

Test #7:

score: 21
Accepted
time: 0ms
memory: 3540kb

input:

6 7
5 6
2 5
2 4
1 6
2 3
3 6
1 2

output:

32

result:

ok 1 number(s): "32"

Test #8:

score: 21
Accepted
time: 0ms
memory: 3532kb

input:

6 8
2 3
1 4
2 4
3 6
1 5
5 6
1 6
2 6

output:

64

result:

ok 1 number(s): "64"

Test #9:

score: 21
Accepted
time: 0ms
memory: 3536kb

input:

6 7
2 6
4 5
1 2
3 6
3 5
1 4
5 6

output:

32

result:

ok 1 number(s): "32"

Test #10:

score: 21
Accepted
time: 0ms
memory: 3624kb

input:

6 8
2 3
3 4
1 5
2 4
1 4
1 3
3 5
5 6

output:

32

result:

ok 1 number(s): "32"

Test #11:

score: 21
Accepted
time: 0ms
memory: 3540kb

input:

6 7
2 6
4 5
1 2
5 6
2 4
1 5
2 5

output:

16

result:

ok 1 number(s): "16"

Test #12:

score: 21
Accepted
time: 0ms
memory: 3836kb

input:

6 8
1 6
4 5
1 3
1 2
3 6
4 6
1 4
3 4

output:

32

result:

ok 1 number(s): "32"

Test #13:

score: 21
Accepted
time: 0ms
memory: 3492kb

input:

6 15
1 5
2 5
3 4
4 5
2 4
2 6
1 4
1 3
4 6
5 6
1 2
1 6
3 5
2 3
3 6

output:

32

result:

ok 1 number(s): "32"

Subtask #2:

score: 0
Wrong Answer

Dependency #1:

100%
Accepted

Test #14:

score: 20
Accepted
time: 1ms
memory: 3828kb

input:

13 12
4 10
1 11
6 10
1 7
3 6
3 8
4 12
5 9
1 5
6 11
10 11
6 12

output:

2048

result:

ok 1 number(s): "2048"

Test #15:

score: 20
Accepted
time: 0ms
memory: 3604kb

input:

13 13
6 12
1 2
5 10
5 6
1 3
3 10
3 12
7 8
4 12
1 6
3 7
3 9
7 13

output:

4096

result:

ok 1 number(s): "4096"

Test #16:

score: 20
Accepted
time: 0ms
memory: 3528kb

input:

13 14
1 10
2 8
4 12
5 6
5 13
10 11
10 12
2 11
3 6
4 7
1 8
3 12
3 5
3 11

output:

8192

result:

ok 1 number(s): "8192"

Test #17:

score: 20
Accepted
time: 0ms
memory: 3796kb

input:

13 15
4 11
2 8
2 5
3 6
9 10
3 10
2 11
10 12
8 11
5 11
4 10
1 4
8 10
7 9
3 11

output:

8192

result:

ok 1 number(s): "8192"

Test #18:

score: 20
Accepted
time: 0ms
memory: 3628kb

input:

13 16
2 10
9 11
6 13
5 11
11 12
5 6
4 5
3 7
5 10
8 11
9 10
1 3
5 8
1 10
3 12
3 10

output:

16384

result:

ok 1 number(s): "16384"

Test #19:

score: 20
Accepted
time: 0ms
memory: 3616kb

input:

13 17
10 13
9 12
1 9
2 3
8 11
9 10
3 10
2 7
3 6
5 12
1 6
2 4
1 7
2 5
3 9
5 8
2 9

output:

16384

result:

ok 1 number(s): "16384"

Test #20:

score: 20
Accepted
time: 0ms
memory: 3540kb

input:

13 18
7 10
6 10
3 8
4 8
5 6
4 13
1 5
5 9
1 6
3 9
2 12
4 9
3 4
1 12
10 11
5 11
3 7
6 8

output:

16384

result:

ok 1 number(s): "16384"

Test #21:

score: 0
Wrong Answer
time: 0ms
memory: 3544kb

input:

13 20
5 13
2 13
4 6
1 12
10 12
1 8
2 8
7 13
1 5
1 6
6 12
8 10
7 11
3 5
3 10
5 10
1 13
4 11
6 10
8 13

output:

8192

result:

wrong answer 1st numbers differ - expected: '4096', found: '8192'

Subtask #3:

score: 0
Wrong Answer

Test #25:

score: 37
Accepted
time: 0ms
memory: 3612kb

input:

50 50
29 32
3 12
36 41
10 30
6 18
20 27
14 36
4 33
6 7
17 31
33 40
2 49
19 42
3 30
2 18
11 42
21 29
11 23
1 35
32 50
22 46
6 22
42 48
15 23
7 43
11 13
5 9
40 50
25 42
5 31
27 30
1 17
14 48
5 44
35 41
1 23
10 21
40 48
12 36
13 37
23 37
23 43
19 26
6 15
13 45
19 27
17 29
20 38
29 42
26 49

output:

974740338

result:

ok 1 number(s): "974740338"

Test #26:

score: 0
Wrong Answer
time: 0ms
memory: 3548kb

input:

49 50
23 42
22 30
8 18
28 42
14 37
34 40
11 34
2 5
9 14
24 34
11 32
41 45
8 28
6 23
9 17
22 31
20 38
4 47
2 39
13 22
14 26
8 45
37 45
17 23
34 37
13 37
33 48
5 12
17 37
27 30
17 21
18 22
28 43
10 23
33 43
31 49
10 43
8 26
12 19
14 28
6 14
2 20
12 49
26 39
35 45
14 48
3 6
14 36
6 48
1 17

output:

487370169

result:

wrong answer 1st numbers differ - expected: '743685088', found: '487370169'

Subtask #4:

score: 0
Skipped

Dependency #1:

100%
Accepted

Dependency #2:

0%