原题链接:https://www.acwing.com/problem/content/1125/
/*
本题
每条路是双向道 -> 每条边都要铲两次:
双向道:每个点的出度==入度
<=>
必然存在欧拉回路
<=>
必然存在一笔画法
o起点
/ \
a---b
\ /
o
最短时间:即刚好一笔画完所有双向边
所以题目已经告诉我们,一定存在欧拉回路了。
*/
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
int main()
{
double x1, y1, x2, y2;
cin >> x1 >> y1;
double sum = 0;
while(cin >> x1 >> y1 >> x2 >> y2)
{
double dx = x1-x2;
double dy = y1-y2;
sum+=sqrt(dx*dx+dy*dy)*2;//每条边铲2次
}
int minutes = round(sum/1000/20*60);//distance/km/20km/h*60=((d/20)h*60)min
int hours = minutes/60;
minutes%=60;
printf("%d:%02d\n",hours,minutes);
return 0;
}
作者:sailor
链接:https://www.acwing.com/activity/content/code/content/2848339/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。