Submission #1692934


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<int>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]);
				rep(i,1,n)if(i!=rt&&!vis[i])ans+=abs(sz[i]-2*cntb[i]);
				sort(All(q));
				int tmp=q[SZ(q)/2];
				rep2(i,0,SZ(q))ans+=abs(tmp-q[i]);
				cout<<ans<<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+abs(k)<<endl;
			}
		}
	}
	return 0;
}

Submission Info

Submission Time
Task F - Namori
User Vegetable
Language C++14 (GCC 5.4.1)
Score 2200
Code Size 2446 Byte
Status AC
Exec Time 35 ms
Memory 7932 KB

Judge Result

Set Name Sample Subtask1 All
Score / Max Score 0 / 0 1500 / 1500 700 / 700
Status
AC × 4
AC × 20
AC × 66
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 26 ms 7168 KB
1_02.txt AC 20 ms 4992 KB
1_03.txt AC 15 ms 4096 KB
1_04.txt AC 25 ms 5504 KB
1_05.txt AC 24 ms 5376 KB
1_06.txt AC 23 ms 5376 KB
1_07.txt AC 23 ms 4992 KB
1_08.txt AC 24 ms 5632 KB
1_09.txt AC 20 ms 4096 KB
1_10.txt AC 20 ms 4096 KB
1_11.txt AC 21 ms 4096 KB
1_12.txt AC 22 ms 4096 KB
1_13.txt AC 1 ms 256 KB
1_14.txt AC 22 ms 4224 KB
1_15.txt AC 22 ms 4096 KB
1_16.txt AC 1 ms 256 KB
1_17.txt AC 23 ms 4096 KB
2_00.txt AC 1 ms 256 KB
2_01.txt AC 35 ms 7932 KB
2_02.txt AC 26 ms 6144 KB
2_03.txt AC 17 ms 4096 KB
2_04.txt AC 31 ms 6144 KB
2_05.txt AC 32 ms 6144 KB
2_06.txt AC 32 ms 6144 KB
2_07.txt AC 32 ms 6144 KB
2_08.txt AC 32 ms 6144 KB
2_09.txt AC 22 ms 4096 KB
2_10.txt AC 23 ms 4096 KB
2_11.txt AC 25 ms 4096 KB
2_12.txt AC 25 ms 4096 KB
2_13.txt AC 1 ms 256 KB
2_14.txt AC 25 ms 4224 KB
2_15.txt AC 25 ms 4224 KB
2_16.txt AC 1 ms 256 KB
2_17.txt AC 26 ms 4096 KB
2_18.txt AC 1 ms 256 KB
2_19.txt AC 24 ms 5760 KB
2_20.txt AC 16 ms 4096 KB
2_21.txt AC 35 ms 7932 KB
2_22.txt AC 29 ms 5760 KB
2_23.txt AC 29 ms 5760 KB
2_24.txt AC 29 ms 5760 KB
2_25.txt AC 30 ms 5760 KB
2_26.txt AC 29 ms 5760 KB
2_27.txt AC 25 ms 4096 KB
2_28.txt AC 25 ms 4096 KB
2_29.txt AC 24 ms 4096 KB
2_30.txt AC 25 ms 4096 KB
2_31.txt AC 1 ms 256 KB
2_32.txt AC 25 ms 4224 KB
2_33.txt AC 25 ms 4096 KB
2_34.txt AC 1 ms 256 KB
2_35.txt AC 25 ms 4096 KB
2_36.txt AC 17 ms 4096 KB
2_37.txt AC 16 ms 4096 KB
2_38.txt AC 16 ms 4096 KB
2_39.txt AC 16 ms 4096 KB
2_40.txt AC 17 ms 4096 KB
2_41.txt AC 16 ms 4096 KB
2_42.txt AC 16 ms 4096 KB
2_43.txt AC 16 ms 4096 KB