Submission #1692927
Source Code Expand
#include<bits/stdc++.h> using namespace std; typedef double db; typedef long long ll; #define w1 first #define w2 second #define ls (x<<1) #define rs (x<<1|1) #define pb push_back #define mid ((l+r)>>1) #define SZ(x) ((x).size()) #define All(x) (x).begin(),(x).end() #define rep(i,a,b) for(int (i)=(a);(i)<=(b);(i)++) #define rep2(i,a,b) for(int (i)=(a);(i)<(b);(i)++) #define per(i,a,b) for(int (i)=(a);(i)>=(b);(i)--) #define Rep(p,x) for(int (p)=head[(x)];(p);(p)=nxt[(p)]) template<class T>void read(T&num){ num=0;T f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9')num=num*10+ch-'0',ch=getchar(); num*=f; } int power(int x,int k,int p){int res=1;for(;k;k>>=1,x=1ll*x*x%p)if(k&1)res=1ll*res*x%p;return res;} const int maxn=1e5+5; int n,m,tot,sumb,rt,pnt; int head[maxn],des[maxn<<1],nxt[maxn<<1]; int cntb[maxn],sz[maxn],vis[maxn],dep[maxn],fa[maxn]; void adde(int x,int y){ des[++tot]=y;nxt[tot]=head[x];head[x]=tot; } void dfs(int x){ vis[x]=1; cntb[x]=dep[x]&1; sz[x]=1; Rep(p,x)if(des[p]!=fa[x]){ if(des[p]==rt)pnt=x; else if(!vis[des[p]]){ dep[des[p]]=dep[x]+1; fa[des[p]]=x; dfs(des[p]); cntb[x]+=cntb[des[p]]; sz[x]+=sz[des[p]]; } } } void dfs1(int x,int fa){ vis[x]=1; Rep(p,x)if(des[p]!=fa){ if(vis[des[p]])rt=des[p]; else dfs1(des[p],x); } } int main(){ read(n);read(m); if(n&1)return puts("-1"),0; rep(i,1,m){ int x,y;read(x);read(y); adde(x,y);adde(y,x); } if(m==n-1){ dep[1]=1; dfs(1); if(cntb[1]*2!=n)puts("-1"); else{ ll ans=0; rep(i,2,n)ans+=abs(sz[i]-cntb[i]-cntb[i]); cout<<ans<<endl; } }else{ dfs1(1,0); rep(i,1,n)vis[i]=0; dep[rt]=1; dfs(rt); if(!(dep[pnt]&1)){ if(cntb[rt]*2!=n)puts("-1"); else{ ll ans=0; vector<db>q; q.pb(0); rep(i,1,n)vis[i]=0; for(int i=pnt;i!=rt;i=fa[i])vis[i]=1,q.pb((2*cntb[i]-sz[i])/2.0),q.pb((2*cntb[i]-sz[i])/2.0); rep(i,1,n)if(i!=rt&&!vis[i])ans+=abs(sz[i]-2*cntb[i]); sort(All(q)); int tmp1=q[SZ(q)/2],tmp2=tmp1+1; db now1=0,now2=0; rep2(i,0,SZ(q))now1+=abs(tmp1-q[i]),now2+=abs(tmp2-q[i]); cout<<ans+min(now1,now2)<<endl; } }else{ int k=n-2*cntb[rt]; if(k&1)puts("-1"); else{ ll ans=0; k>>=1; rep(i,1,n)vis[i]=0; for(int i=pnt;i!=rt;i=fa[i])vis[i]=1,ans+=abs(sz[i]-2*cntb[i]-k); rep(i,1,n)if(i!=rt&&!vis[i])ans+=abs(sz[i]-2*cntb[i]); cout<<ans+k<<endl; } } } return 0; }
Submission Info
Submission Time | |
---|---|
Task | F - Namori |
User | Vegetable |
Language | C++14 (GCC 5.4.1) |
Score | 1500 |
Code Size | 2548 Byte |
Status | WA |
Exec Time | 35 ms |
Memory | 9460 KB |
Judge Result
Set Name | Sample | Subtask1 | All | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 1500 / 1500 | 0 / 700 | ||||||||
Status |
|
|
|
Set Name | Test Cases |
---|---|
Sample | 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt |
Subtask1 | 0_00.txt, 0_01.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt |
All | 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 2_00.txt, 2_01.txt, 2_02.txt, 2_03.txt, 2_04.txt, 2_05.txt, 2_06.txt, 2_07.txt, 2_08.txt, 2_09.txt, 2_10.txt, 2_11.txt, 2_12.txt, 2_13.txt, 2_14.txt, 2_15.txt, 2_16.txt, 2_17.txt, 2_18.txt, 2_19.txt, 2_20.txt, 2_21.txt, 2_22.txt, 2_23.txt, 2_24.txt, 2_25.txt, 2_26.txt, 2_27.txt, 2_28.txt, 2_29.txt, 2_30.txt, 2_31.txt, 2_32.txt, 2_33.txt, 2_34.txt, 2_35.txt, 2_36.txt, 2_37.txt, 2_38.txt, 2_39.txt, 2_40.txt, 2_41.txt, 2_42.txt, 2_43.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
0_00.txt | AC | 1 ms | 256 KB |
0_01.txt | AC | 1 ms | 256 KB |
0_02.txt | AC | 1 ms | 256 KB |
0_03.txt | AC | 1 ms | 256 KB |
1_00.txt | AC | 1 ms | 256 KB |
1_01.txt | AC | 23 ms | 7168 KB |
1_02.txt | AC | 19 ms | 4992 KB |
1_03.txt | AC | 15 ms | 4096 KB |
1_04.txt | AC | 23 ms | 5504 KB |
1_05.txt | AC | 22 ms | 5376 KB |
1_06.txt | AC | 23 ms | 5376 KB |
1_07.txt | AC | 22 ms | 4992 KB |
1_08.txt | AC | 23 ms | 5632 KB |
1_09.txt | AC | 19 ms | 4096 KB |
1_10.txt | AC | 19 ms | 4096 KB |
1_11.txt | AC | 20 ms | 4096 KB |
1_12.txt | AC | 20 ms | 4096 KB |
1_13.txt | AC | 1 ms | 256 KB |
1_14.txt | AC | 20 ms | 4224 KB |
1_15.txt | AC | 20 ms | 4096 KB |
1_16.txt | AC | 1 ms | 256 KB |
1_17.txt | AC | 20 ms | 4096 KB |
2_00.txt | AC | 1 ms | 256 KB |
2_01.txt | AC | 35 ms | 9460 KB |
2_02.txt | WA | 25 ms | 6904 KB |
2_03.txt | WA | 15 ms | 4096 KB |
2_04.txt | WA | 32 ms | 6904 KB |
2_05.txt | WA | 32 ms | 6904 KB |
2_06.txt | WA | 32 ms | 6904 KB |
2_07.txt | WA | 32 ms | 6904 KB |
2_08.txt | WA | 32 ms | 6904 KB |
2_09.txt | WA | 21 ms | 4096 KB |
2_10.txt | WA | 22 ms | 4096 KB |
2_11.txt | WA | 23 ms | 4096 KB |
2_12.txt | AC | 24 ms | 4096 KB |
2_13.txt | AC | 1 ms | 256 KB |
2_14.txt | AC | 24 ms | 4224 KB |
2_15.txt | WA | 24 ms | 4224 KB |
2_16.txt | AC | 1 ms | 256 KB |
2_17.txt | AC | 24 ms | 4096 KB |
2_18.txt | AC | 1 ms | 256 KB |
2_19.txt | AC | 23 ms | 5760 KB |
2_20.txt | AC | 17 ms | 4096 KB |
2_21.txt | AC | 35 ms | 9460 KB |
2_22.txt | AC | 27 ms | 5760 KB |
2_23.txt | WA | 28 ms | 5760 KB |
2_24.txt | WA | 28 ms | 5760 KB |
2_25.txt | AC | 27 ms | 5760 KB |
2_26.txt | AC | 34 ms | 5760 KB |
2_27.txt | AC | 24 ms | 4096 KB |
2_28.txt | AC | 24 ms | 4096 KB |
2_29.txt | WA | 23 ms | 4096 KB |
2_30.txt | WA | 24 ms | 4096 KB |
2_31.txt | AC | 1 ms | 256 KB |
2_32.txt | AC | 24 ms | 4224 KB |
2_33.txt | WA | 24 ms | 4224 KB |
2_34.txt | AC | 1 ms | 256 KB |
2_35.txt | AC | 24 ms | 4096 KB |
2_36.txt | WA | 15 ms | 4096 KB |
2_37.txt | AC | 16 ms | 4096 KB |
2_38.txt | AC | 15 ms | 4096 KB |
2_39.txt | WA | 15 ms | 4096 KB |
2_40.txt | AC | 16 ms | 4096 KB |
2_41.txt | WA | 15 ms | 4096 KB |
2_42.txt | AC | 16 ms | 4096 KB |
2_43.txt | WA | 15 ms | 4096 KB |