提出 #73686851


ソースコード 拡げる

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define rep(t,l,r) for(int t=l;t<=r;t++)
#define per(t,l,r) for(int t=r;t>=l;t--)
const int N=200005,MOD=998244353;
int n,m,U[N],V[N],f[N],pw[N],dep[N],fa[N][20],fe[N],h[N],tot,mst[N];
struct E {int to,id,nxt;} e[N*2];
vector<int> g[N];
void add(int u,int v,int id) {e[++tot]={v,id,h[u]};h[u]=tot;}
int find(int x) {return f[x]==x?x:f[x]=find(f[x]);}
void dfs1(int u,int p,int d,int id) {
    dep[u]=d;fa[u][0]=p;fe[u]=id;
    rep(i,1,19) fa[u][i]=fa[fa[u][i-1]][i-1];
    for(int i=h[u];i;i=e[i].nxt) if(e[i].to!=p) dfs1(e[i].to,u,d+1,e[i].id);
}
int lca(int u,int v) {
    if(dep[u]<dep[v]) swap(u,v);
    per(i,0,19) if(dep[fa[u][i]]>=dep[v]) u=fa[u][i];
    if(u==v) return u;
    per(i,0,19) if(fa[u][i]!=fa[v][i]) {u=fa[u][i];v=fa[v][i];}
    return fa[u][0];
}
signed main() {
    ios::sync_with_stdio(0);cin.tie(0);
    cin>>n>>m;pw[0]=1;rep(i,1,m) pw[i]=pw[i-1]*2%MOD;
    rep(i,1,n) f[i]=i;
    rep(i,1,m) cin>>U[i]>>V[i];
    per(i,1,m) {
        int x=find(U[i]),y=find(V[i]);
        if(x!=y) {f[x]=y;mst[i]=1;add(U[i],V[i],i);add(V[i],U[i],i);}
    }
    dfs1(1,0,1,0);
    rep(i,1,m) {
        if(mst[i]) continue;
        int u=U[i],v=V[i],p=lca(u,v);
        while(u!=p) {g[u].push_back(i);u=fa[u][0];}
        while(v!=p) {g[v].push_back(i);v=fa[v][0];}
    }
    int mn=m+1,be=-1;
    rep(i,2,n) {
        int mx=fe[i];
        for(int x:g[i]) if(x>mx) mx=x;
        if(mx<mn) {mn=mx;be=i;}
    }
    int ans=pw[fe[be]];
    for(int x:g[be]) ans=(ans+pw[x])%MOD;
    cout<<ans<<"\n";
    return 0;
}

提出情報

提出日時
問題 E - Divide Graph
ユーザ Fourier_WJY
言語 C++ IOI-Style(GNU++20) (GCC 14.2.0)
得点 475
コード長 1635 Byte
結果 AC
実行時間 541 ms
メモリ 355348 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 475 / 475
結果
AC × 3
AC × 36
セット名 テストケース
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
ケース名 結果 実行時間 メモリ
00_sample_00.txt AC 1 ms 1708 KiB
00_sample_01.txt AC 1 ms 1708 KiB
00_sample_02.txt AC 1 ms 1580 KiB
01_random_00.txt AC 48 ms 18976 KiB
01_random_01.txt AC 49 ms 21428 KiB
01_random_02.txt AC 105 ms 54852 KiB
01_random_03.txt AC 9 ms 6444 KiB
01_random_04.txt AC 101 ms 55100 KiB
01_random_05.txt AC 107 ms 54280 KiB
01_random_06.txt AC 104 ms 53156 KiB
01_random_07.txt AC 116 ms 56700 KiB
01_random_08.txt AC 230 ms 101012 KiB
01_random_09.txt AC 134 ms 63772 KiB
01_random_10.txt AC 164 ms 85548 KiB
01_random_11.txt AC 175 ms 90156 KiB
01_random_12.txt AC 187 ms 90028 KiB
01_random_13.txt AC 140 ms 66348 KiB
01_random_14.txt AC 86 ms 59436 KiB
02_perfect_00.txt AC 38 ms 13228 KiB
02_perfect_01.txt AC 37 ms 11948 KiB
02_perfect_02.txt AC 40 ms 13212 KiB
02_perfect_03.txt AC 541 ms 350372 KiB
02_perfect_04.txt AC 487 ms 355348 KiB
02_perfect_05.txt AC 517 ms 351928 KiB
02_perfect_06.txt AC 91 ms 47904 KiB
02_perfect_07.txt AC 88 ms 44216 KiB
02_perfect_08.txt AC 99 ms 49884 KiB
03_tree_00.txt AC 71 ms 65324 KiB
03_tree_01.txt AC 66 ms 56492 KiB
03_tree_02.txt AC 50 ms 54700 KiB
03_tree_03.txt AC 55 ms 54700 KiB
03_tree_04.txt AC 61 ms 54700 KiB
03_tree_05.txt AC 65 ms 54700 KiB
03_tree_06.txt AC 67 ms 54700 KiB
04_handmade_00.txt AC 1 ms 1580 KiB
04_handmade_01.txt AC 64 ms 78124 KiB