小沙的长路(图论,欧拉图)

https://ac.nowcoder.com/acm/contest/23477/E

最小路我是根据画图推出来的,就是把每三条相邻的边都划成最短的,可以发现最短路永远是 n − 1 n - 1 n1,然后根据定义得,欧拉图要么全是偶点,要么有两个奇点,可以发现,当n为奇数时,该完全图每个点都是偶点,所以可以走全;当为偶数时,每个点都是奇点,至少需要删掉几条边使这个图只具有两个奇点,那就是减去 n / 2 − 1 n/2-1 n/21。然后完全图得总边数是 n ∗ ( n − 1 ) / 2 n * (n - 1) / 2 n(n1)/2,由首项加末项得公式得来。

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{
	int n;
	cin >> n;
	cout << n - 1 << " ";
	if (n % 2 == 0) cout << (1 + n - 1) * (n - 1) / 2 - (n / 2 - 1);
	else cout << (1 + n - 1) * (n - 1) / 2;
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值