結果
問題 | No.2494 Sum within Components |
ユーザー |
|
提出日時 | 2023-10-06 23:24:25 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 61 ms / 2,000 ms |
コード長 | 1,539 bytes |
コンパイル時間 | 1,694 ms |
コンパイル使用メモリ | 169,692 KB |
実行使用メモリ | 7,168 KB |
最終ジャッジ日時 | 2024-07-26 17:06:33 |
合計ジャッジ時間 | 2,982 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 17 |
ソースコード
#define _DE123BUG#include <bits/stdc++.h>using namespace std;#define endl "\n"#define fi first#define se second#define all(x) (x).begin(),(x).end()#define sz(x) (x).size()typedef long long ll;typedef long double ld;typedef pair<int, int> pii;typedef pair<ll, ll> pll;typedef pair<ld, ld> pdd;typedef vector<int> vi;typedef vector<pii> vii;const long double pi = acos(-1.0);const int INF = 987654321;const ll LLINF = 4e18;const double eps = 1e-9;template<class T>bool chmax(T& a, const T& b) { if (a < b) { a = b; return 1; } return 0; }template<class T>bool chmin(T& a, const T& b) { if (b < a) { a = b; return 1; } return 0; }///int parent[200004];ll sizee[200004];const ll MOD = 998244353;int find(int n){if(n==parent[n]) return n;return parent[n] = find(parent[n]);}void merge(int u, int v){u=find(u);v=find(v);if(u==v) return;parent[v] = u;sizee[u] += sizee[v];sizee[u] %= MOD;sizee[v] = 0;}int main(){#ifdef _DEBUGfreopen("input.txt", "r", stdin);freopen("output.txt", "w", stdout);#endifios::sync_with_stdio(false);cin.tie(NULL);ll N, M; cin >> N >> M;vector<ll> V(N); for(auto &v: V) cin >> v;for(ll i = 1; i <= N; i++){parent[i] = i;sizee[i] = V[i-1];}while(M--){ll u, v; cin >> u >> v;merge(u, v);}ll ans = 1;for(ll i = 1; i <= N; i++){ans *= sizee[find(i)];ans %= MOD;}cout << ans << endl;return 0;}