WA 题目传送门
#include<bits/stdc++.h>
#define int long long
using namespace std;
vector<int> g[200010];
int d[200010],c1,c2,ans;
bool dfs(int u,int color){
//cout<<u<<endl;
d[u] = color;
if(color == 1)c1++;
else c2++;
for(int v:g[u]){
if(d[v] == 0&&!dfs(v,-color) ){
return 0;
}
else if(d[v] == color){
return 0;
}
}
return 1;
}
int ans1,ans2;
signed main(){
int n,m;
cin>>n>>m;
for(int i = 1;i <= m;i++){
int u,v;
cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
for(int i = 1;i <= n;i++){
if(!d[i]){
c1 = c2 = 0;
if(dfs(i,1) == 0){
cout<<0;
return 0;
}
ans1+=c1*c2;
int s = c1+c2;
ans2+= n*(n-s);
}
}
cout<<ans1+ans2/2-m;
return 0;
}