Submission #73710601


Source Code Expand

#include <bits/stdc++.h>
#define _ ios_base::sync_with_stdio(0);cin.tie(0);
#define endl '\n'
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
typedef long long ll;
using namespace std;
#define int ll

struct Dsu {
	vector<int> id, sz;
	int cc;

	Dsu(int n) : id(n), sz(n, 1), cc(n) { iota(id.begin(), id.end(), 0); }

	int find(int a) { return a == id[a] ? a : id[a] = find(id[a]); }

	void merge(int a, int b) {
		a = find(a), b = find(b);
		if (a == b) return;
		if (sz[a] < sz[b]) swap(a, b);
		sz[a] += sz[b], id[b] = a;
		cc--;
	}
};

const int mod = 998244353;
int solve() {
	int n, m; cin >> n >> m;

	vector<array<int, 2>> E(m);
	for (auto& [u, v] : E) {
		cin >> u >> v; u--, v--;
	}

	Dsu dsu(n);
	int p = m-1;
	for (; p >= 0 and dsu.cc != 2; p--) {
		auto [u, v] = E[p];
		dsu.merge(u, v);
		if (dsu.cc == 2) {
			break;
		}
	}

	vector<int> P(m + 10, 1);
	for (int i = 1; i < m + 10; i++) {
		P[i] = P[i-1] * 2 % mod;	
	}

	int res = 0;
	for (; p >= 0; p--) {
		auto [u, v] = E[p]; 
		if (dsu.find(u) == dsu.find(v)) {
			continue;
		}
		res += P[(p + 1)];
		if (res >= mod) {
			res -= mod;
		}
	}
	cout << res << endl;

	return(0);
}

signed main()
{
    _;

	int t = 1; //cin >> t;
	while (t--) {
		solve();
	}
    
    return(0);
}

Submission Info

Submission Time
Task E - Divide Graph
User becastal
Language C++23 (GCC 15.2.0)
Score 475
Code Size 1358 Byte
Status AC
Exec Time 27 ms
Memory 11240 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 475 / 475
Status
AC × 3
AC × 36
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 02_perfect_00.txt, 02_perfect_01.txt, 02_perfect_02.txt, 02_perfect_03.txt, 02_perfect_04.txt, 02_perfect_05.txt, 02_perfect_06.txt, 02_perfect_07.txt, 02_perfect_08.txt, 03_tree_00.txt, 03_tree_01.txt, 03_tree_02.txt, 03_tree_03.txt, 03_tree_04.txt, 03_tree_05.txt, 03_tree_06.txt, 04_handmade_00.txt, 04_handmade_01.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3572 KiB
00_sample_01.txt AC 1 ms 3484 KiB
00_sample_02.txt AC 1 ms 3440 KiB
01_random_00.txt AC 13 ms 7596 KiB
01_random_01.txt AC 12 ms 6872 KiB
01_random_02.txt AC 10 ms 6368 KiB
01_random_03.txt AC 2 ms 3772 KiB
01_random_04.txt AC 14 ms 7164 KiB
01_random_05.txt AC 10 ms 6544 KiB
01_random_06.txt AC 9 ms 6068 KiB
01_random_07.txt AC 9 ms 5832 KiB
01_random_08.txt AC 13 ms 7136 KiB
01_random_09.txt AC 10 ms 5976 KiB
01_random_10.txt AC 21 ms 10592 KiB
01_random_11.txt AC 20 ms 10472 KiB
01_random_12.txt AC 22 ms 10712 KiB
01_random_13.txt AC 14 ms 8052 KiB
01_random_14.txt AC 19 ms 9952 KiB
02_perfect_00.txt AC 14 ms 8040 KiB
02_perfect_01.txt AC 14 ms 7956 KiB
02_perfect_02.txt AC 14 ms 8004 KiB
02_perfect_03.txt AC 14 ms 8008 KiB
02_perfect_04.txt AC 14 ms 8028 KiB
02_perfect_05.txt AC 14 ms 7988 KiB
02_perfect_06.txt AC 14 ms 8040 KiB
02_perfect_07.txt AC 14 ms 7952 KiB
02_perfect_08.txt AC 14 ms 8008 KiB
03_tree_00.txt AC 24 ms 11232 KiB
03_tree_01.txt AC 27 ms 11096 KiB
03_tree_02.txt AC 20 ms 11188 KiB
03_tree_03.txt AC 21 ms 11152 KiB
03_tree_04.txt AC 27 ms 11240 KiB
03_tree_05.txt AC 22 ms 11112 KiB
03_tree_06.txt AC 22 ms 11112 KiB
04_handmade_00.txt AC 1 ms 3628 KiB
04_handmade_01.txt AC 18 ms 11208 KiB