Submission #869030


Source Code Expand

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <vector>
#include <string>
#include <map>
#include <set>
#include <cassert>
using namespace std;
#define rep(i,a,n) for (int i=a;i<n;i++)
#define per(i,a,n) for (int i=n-1;i>=a;i--)
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define SZ(x) ((int)(x).size())
typedef vector<int> VI;
typedef long long ll;
typedef pair<int,int> PII;
const ll mod=1000000007;
ll powmod(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
// head

const int N=201000;
int n,m,u,v,q[N],d[N],od[N];
ll ret;
VI e[N],cyc;
int dfs(int u,int f,int p) {
	int par=(p==0)?1:-1;
	for (auto v:e[u]) {
		if (v==f||d[v]!=1) continue;
		par+=dfs(v,u,p^1);
	}
	if (f!=0) ret+=abs(par);
	return par;
}
void dfs2(int u) {
	d[u]=0; cyc.pb(u);
	for (auto v:e[u]) if (d[v]==2) {
		dfs2(v);
	}
}
int main() {
	scanf("%d%d",&n,&m);
	if (n-1==m) {
		rep(i,0,m) {
			scanf("%d%d",&u,&v);
			e[u].pb(v); e[v].pb(u);
		}
		rep(i,1,n+1) d[i]=1;
		int c=dfs(1,0,0);
		if (c!=0) {
			puts("-1");
		} else {
			printf("%lld\n",ret);
		}		
	} else {
		rep(i,0,m) {
			scanf("%d%d",&u,&v);
			e[u].pb(v); e[v].pb(u);
			d[u]++; d[v]++;
		}
		int t=0;
		rep(i,1,n+1) if (d[i]==1) {
			q[t++]=i;
		}
		rep(i,0,t) {
			int u=q[i];
			for (auto v:e[u]) {
				if (d[v]==1) continue;
				--d[v];
				if (d[v]==1) q[t++]=v;
			}
		}
		int rt=0;
		rep(i,1,n+1) if (d[i]==2) {
			rt=i;
			break;
		}
		dfs2(rt);
		m=SZ(cyc);
		rep(i,0,m) {
			od[i]=dfs(cyc[i],0,0);
		}
		if (m%2==0) {
			rep(i,0,m) if (i%2==1) od[i]*=-1;
			ll s=0;
			VI v;
			rep(i,0,m) {
				v.pb(s);
				s+=od[i];
			}
			if (s!=0) {
				puts("-1");
				return 0;
			}
			sort(all(v));
			rep(i,0,m/2) ret+=v[i+m/2]-v[i];
			printf("%lld\n",ret);
		} else {
			ll s=0;
			rep(i,0,m) s+=od[i];
			if (s%2!=0) {
				puts("-1");
				return 0;
			}
			s/=2;
			for (int i=1;i<m;i+=2) s-=od[i];
			ll c=s;
			rep(i,0,m) {
				ret+=max(s,-s);
				s=od[i]-s;
			}
			assert(s==c);
			printf("%lld\n",ret);
		}
	}
}

Submission Info

Submission Time
Task F - Namori
User apiad
Language C++14 (GCC 5.4.1)
Score 2200
Code Size 2242 Byte
Status AC
Exec Time 121 ms
Memory 14712 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:46:21: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d",&n,&m);
                     ^
./Main.cpp:49:23: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
    scanf("%d%d",&u,&v);
                       ^
./Main.cpp:61:23: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
    scanf("%d%d",&u,&v);
                       ^

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 12 ms 4992 KB
0_01.txt AC 12 ms 4992 KB
0_02.txt AC 13 ms 4992 KB
0_03.txt AC 11 ms 4992 KB
1_00.txt AC 12 ms 4992 KB
1_01.txt AC 91 ms 14464 KB
1_02.txt AC 71 ms 10368 KB
1_03.txt AC 62 ms 8824 KB
1_04.txt AC 79 ms 11392 KB
1_05.txt AC 84 ms 11008 KB
1_06.txt AC 81 ms 11008 KB
1_07.txt AC 86 ms 10368 KB
1_08.txt AC 84 ms 11520 KB
1_09.txt AC 69 ms 8832 KB
1_10.txt AC 75 ms 8604 KB
1_11.txt AC 77 ms 8576 KB
1_12.txt AC 79 ms 8576 KB
1_13.txt AC 80 ms 9088 KB
1_14.txt AC 76 ms 8576 KB
1_15.txt AC 76 ms 8576 KB
1_16.txt AC 79 ms 8576 KB
1_17.txt AC 79 ms 8576 KB
2_00.txt AC 11 ms 4992 KB
2_01.txt AC 103 ms 14712 KB
2_02.txt AC 86 ms 12032 KB
2_03.txt AC 66 ms 9208 KB
2_04.txt AC 96 ms 11900 KB
2_05.txt AC 96 ms 11904 KB
2_06.txt AC 97 ms 11772 KB
2_07.txt AC 121 ms 11900 KB
2_08.txt AC 102 ms 11772 KB
2_09.txt AC 83 ms 9216 KB
2_10.txt AC 87 ms 9088 KB
2_11.txt AC 86 ms 8960 KB
2_12.txt AC 89 ms 8960 KB
2_13.txt AC 95 ms 11516 KB
2_14.txt AC 89 ms 9216 KB
2_15.txt AC 89 ms 8960 KB
2_16.txt AC 91 ms 8960 KB
2_17.txt AC 89 ms 8960 KB
2_18.txt AC 12 ms 4992 KB
2_19.txt AC 82 ms 11900 KB
2_20.txt AC 67 ms 9208 KB
2_21.txt AC 99 ms 14712 KB
2_22.txt AC 88 ms 11648 KB
2_23.txt AC 107 ms 11644 KB
2_24.txt AC 95 ms 11516 KB
2_25.txt AC 90 ms 11772 KB
2_26.txt AC 91 ms 11520 KB
2_27.txt AC 81 ms 9216 KB
2_28.txt AC 85 ms 9088 KB
2_29.txt AC 85 ms 9088 KB
2_30.txt AC 88 ms 8960 KB
2_31.txt AC 91 ms 10748 KB
2_32.txt AC 92 ms 9088 KB
2_33.txt AC 90 ms 8960 KB
2_34.txt AC 89 ms 8960 KB
2_35.txt AC 90 ms 8960 KB
2_36.txt AC 67 ms 9208 KB
2_37.txt AC 67 ms 9208 KB
2_38.txt AC 66 ms 9208 KB
2_39.txt AC 67 ms 9208 KB
2_40.txt AC 67 ms 9208 KB
2_41.txt AC 67 ms 9208 KB
2_42.txt AC 65 ms 9208 KB
2_43.txt AC 64 ms 9208 KB