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 |
|
|
|
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 |