結果

問題 No.2912 0次パーシステントホモロジー
ユーザー Nzt3
提出日時 2024-10-04 22:14:23
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 74 ms / 2,000 ms
コード長 1,316 bytes
コンパイル時間 2,279 ms
コンパイル使用メモリ 204,808 KB
最終ジャッジ日時 2025-02-24 15:22:14
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 23
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#include<bits/stdc++.h>
using namespace std;
using ll=long long;
constexpr int MOD=998244353;
#define rep(i,n) for(int i=0;i<(int)(n);i++)
#define rep2(i,l,r) for(int i=(l);i<(int)(r);i++)
#define all(v) v.begin(),v.end()
namespace Lib {
struct DSU {
vector<int> par, sz;
DSU(int n) : par(n), sz(n) {
fill(par.begin(), par.end(), -1);
fill(sz.begin(), sz.end(), 1);
}
int leader(int a) {
if (par[a] == -1) return a;
return par[a] = leader(par[a]);
}
bool merge(int a, int b) {
a = leader(a), b = leader(b);
if (a == b) return false;
if (sz[a] > sz[b]) swap(a, b);
par[a] = b;
sz[b] += sz[a];
return true;
}
bool same(int a, int b) {
a = leader(a), b = leader(b);
return a == b;
}
int size(int v) {
v = leader(v);
return sz[v];
}
};
} // namespace Lib
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N,M;
cin>>N>>M;
vector E(M,array<int,3>());
rep(i,M)cin>>E[i][1]>>E[i][2]>>E[i][0];
int T;
cin>>T;
vector ans(T,0);
rep(i,T){
array<int,3> q;
cin>>q[0];
q[1]=1e9;
q[2]=i;
E.push_back(q);
}
int cnt=N;
sort(all(E));
Lib::DSU dsu(N);
for(auto [w,u,v]:E){
if(u==1e9){
ans[v]=cnt;
}else{
if(dsu.merge(u,v))cnt-=1;
}
}
for(int i:ans)cout<<i<<'\n';
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0