#include<cstdio>#include<cstring>#include<algorithm>usingnamespace std;
structnode {
int x, y, w, pl;
}a[300001], b[300001];
int n, m, pl[300001];
int ans[300001];
boolcmp(node x, node y){
return x.w < y.w;
}
structHeap {
int fa[300001], sz[300001], tot, sta[300001];
voidInit(){
tot = n; for (int i = 1; i <= n; i++) fa[i] = i, sz[i] = 1;
}
intfind(int now){
if (fa[now] == now) return now;
returnfind(fa[now]);
}
voidconnect(int x, int y){
int X = find(x), Y = find(y);
if (X == Y) return ;
if (sz[X] > sz[Y]) swap(X, Y), swap(x, y);
fa[X] = Y; tot -= (sz[X] & 1) + (sz[Y] & 1);
sz[Y] += sz[X]; tot += (sz[Y] & 1);
sta[++sta[0]] = X;
}
voidback(){
int X = sta[sta[0]], Y = fa[X];
tot -= (sz[Y] & 1); sz[Y] -= sz[X];
tot += (sz[X] & 1) + (sz[Y] & 1); fa[X] = X;
sta[0]--;
}
}H;
voidclac(int mid, int l, int r, int L, int R){
int lst = H.sta[0];
for (int i = l; i <= mid; i++)
if (pl[i] < L) H.connect(b[i].x, b[i].y);
for (int i = L; i <= R; i++) {
if (a[i].pl <= mid) {
H.connect(a[i].x, a[i].y);
if (!H.tot) {
ans[mid] = i; break;
}
}
}
while (H.sta[0] > lst) H.back();
}
voidcdq(int l, int r, int L, int R){
if (l > r) return ;
int mid = (l + r) >> 1;
clac(mid, l, r, L, R);
if (!ans[mid]) {
for (int i = l; i <= mid; i++)
if (pl[i] < L) H.connect(b[i].x, b[i].y);
cdq(mid + 1, r, L, R);
return ;
}
int lst = H.sta[0];
for (int i = L; i <= ans[mid]; i++)
if (a[i].pl < l) H.connect(a[i].x, a[i].y);
cdq(l, mid - 1, ans[mid], R);
while (H.sta[0] > lst) H.back();
lst = H.sta[0];
for (int i = l; i <= mid; i++)
if (pl[i] < L) H.connect(b[i].x, b[i].y);
cdq(mid + 1, r, L, ans[mid]);
while (H.sta[0] > lst) H.back();
}
intmain(){
scanf("%d %d", &n, &m);
for (int i = 1; i <= m; i++) {
scanf("%d %d %d", &a[i].x, &a[i].y, &a[i].w); a[i].pl = i;
}
memcpy(b, a, sizeof(b)); H.Init();
sort(a + 1, a + m + 1, cmp);
for (int i = 1; i <= m; i++)
pl[a[i].pl] = i;
cdq(1, m, 1, m);
for (int i = 1; i <= m; i++)
printf("%d\n", ans[i] ? a[ans[i]].w : -1);
return0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现