骑马修栅栏--一种较为慢的做法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了骑马修栅栏--一种较为慢的做法相关的知识,希望对你有一定的参考价值。

一种挺简单的做法,欧拉标准算法,贴上程序

vvvvvv

#include<iostream>
#include<cstring>
#include<string>
#include<fstream>
#include<queue>
#include<climits>
#include<vector>
using namespace std;
int Max(int a,int b) { return a>b?a:b; }
int Min(int a,int b) { return a<b?a:b; }
int map[505][505];
int path[1050];
int pathnum;
int minv=INT_MAX,maxv=0;
void Euler_circle_u(int v)
{
for (int i=minv;i<=maxv;i++)
while(map[i][v]>0)
{
map[i][v]--;
map[v][i]--;
Euler_circle_u(i);
}
path[pathnum++]=v;
}
int main(){
int f;
cin>>f;
memset(map,0,sizeof(map));
for (int i=0;i<f;i++)
{
int a,b;
cin>>a>>b;
minv=Min(a,minv);
minv=Min(b,minv);
maxv=Max(a,maxv);
maxv=Max(b,maxv);
map[a][0]++;
map[b][0]++;
map[a][b]++;
map[b][a]++;
}
int k=minv;
for (int i=minv;i<=maxv;i++)
if (map[i][0]%2==1)
{
k=i;
break;
}
Euler_circle_u(k);
for (int i=pathnum-1;i>=0;i--)
cout<<path[i]<<endl;
return 0;

以上是关于骑马修栅栏--一种较为慢的做法的主要内容,如果未能解决你的问题,请参考以下文章

2039 骑马修栅栏

题解骑马修栅栏

CodeVS2039骑马修栅栏

codevs 水过 骑马修栅栏

洛谷 P2731 骑马修栅栏 Riding the Fences

洛谷P2731骑马修栅栏