题目链接https://www.zhixincode.com/contest/17/problem/D?problem_id=251
怼了三个小时吧。。完全没考虑有一条边等于2的情况。。
主要思路就是欧拉回路每个点出度=入度,对每条边加方向,加边(走几次)
尝试了很多次之后,直觉告诉我每条边最多走两次,并且要让走两次的边尽量少。
#include <cstdio>
#include <iostream>
#include <vector>
#include <queue>
#include <map>
#include <cstring>
#include <algorithm>
#define ll long long
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
if(n==2||m==2)
{
int maxn=max(n,m);
cout<<(maxn-1)*4<<endl;
return 0;
}
ll ans=2*(n+m-2);
ans+=((n-1)*(m-1))/2*4;
cout<<ans<<endl;
return 0;
}