洛谷 P3505 [POI2010]TEL-Teleportation
题目描述
King Byteasar is the ruler of the whole solar system that contains
planets.
This number is so large that people have abandoned the silly custom of naming the planets and use numbers instead. The planets are thus conveniently numbered from 1 to
.
Byteasar's palace is on the planet no. 1, while his military base on the planet no. 2.
A long time ago Byteasar had a teleportation portal established between these two planets, which allows travelling from either planet to another in two hundred and fifty minutes (slightly over four hours).
Nowadays the teleportation technology is more mature, and the recent teleportation devices shorten the travel time to just a single hour. Let us note here, that all the portals, both the Byteasar's old one and the new ones available on the market, are of course bidirectional, and that the teleportation travel time is irrespective of the distance travelled.
Some planets of the system are already connected with these new teleportation portals.
In fact, it is already possible to travel between the planets no. 1 and 2 without using the king's private portal, though this involves several other portals and is thus no faster than the king's portal.
Byteasar finds this rather fortunate, as he believes that such possibility would be a security breach.
The technology itself is increasingly available, and as everyone realises its economic significance, each pair of planets that are not currently directly connected with a portal are petitioning for establishing such a connection. Being a wise ruler, Byteasar intends to give his consent to as many constructions as possible, though keeping himself secure, i.e., not allowing the travel between planets 1 and 2 faster than with his private portal.
Help the king determine how many portals he can agree to.
给一张图,要求你再尽可能的多连边,使得从1到2至少要经过5条边
输入输出格式
输入格式:
Two integers are given in the first line of the standard input,
and
(
,
), separated by a single space, denoting the number of planets in Byteasar's realm and the number of new portals that already exist.
These teleportation portals are described in the
lines that follow.
Each such line contains two integers
and
(
), separated by a single space, denoting that there is a teleportation portal of the new kind connecting
and
.
No pair of numbers appears twice.
You may assume that the existing network of new portals allows travel from planet no. 1 to planet no. 2, but in no less than 250 minutes.
输出格式:
Your program should print out just a single integer, namely the maximum number of portals Byteasar can agree to without breaching his security.
输入输出样例
10 10
1 3
3 5
5 7
7 9
2 9
1 4
4 6
6 8
8 10
2 10
10
思路:假设已经完成了所有的建图。
那我可以把最后得到的图中的n个点划分为6个集合:1所在的集合,A,B,C,D,2所在的集合
相邻的两个集合之间的所有的点有连边,同一个集合里的各个点之间有连边,其余的没有边。
首先可以证明1所在的集合={1},因为如果放入了其他的点,他就只能和1还有A连边。
但是如果打他放在A里,他就可以和1,A中所有的点,B中所有的点连边。
同理,可以证明2所在的集合={2};
然后会惊讶的发现,在1和2所在的集合确定好了之后,集合A,D也随之确定了。
因为只有A集合中的点才能向1连边,所以在原图中与1相连的点一定在A集合中,其他的点一定可以不在A集合中(因为C集合不为空集)。
同理,集合D也可以得到。
然后考虑剩下的点,他们两两之间肯定有边相连,所以我们要做的就是让他们尽可能多的向外连边,他们向外连边只有两种情况:
1.分到B集合里向A连边。
2.分到C集合里向D连边。
所以在原图中,与A集合中的点有连边的点一定会被分到B集合中。与D集合中的点有连边的点一定会被分到C集合中。
剩下的点一定是按照最优策略分到能连出尽可能多的边的点集中,也就是说,如果A重点的数量比D中的多,就把这些点分到B中,反之分到C中。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 1000010
using namespace std;
int n,m,tot,ans;
int tmp1,tmp2;
int tot1,tot2,tot3;
int belong[MAXN];
int to[MAXN*],net[MAXN*],head[MAXN];
void add(int u,int v){
to[++tot]=v;net[tot]=head[u];head[u]=tot;
to[++tot]=u;net[tot]=head[v];head[v]=tot;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++){
int u,v;
scanf("%d%d",&u,&v);
add(u,v);
}
for(int i=head[];i;i=net[i])
tot1++,belong[to[i]]=;
for(int i=head[];i;i=net[i])
tot2++,belong[to[i]]=;
tot3=n-tot1-tot2-;
ans=tot1*(tot1-)/+tot2*(tot2-)/+tot3*(tot3-)/+tot1+tot2;
for(int x=;x<=n;x++)
if(!belong[x])
for(int i=head[x];i;i=net[i]){
if(!belong[to[i]]) continue;
if(belong[to[i]]==) tmp1++;
else tmp2++;
break;
}
ans+=tmp1*tot1+tmp2*tot2+(tot3-tmp1-tmp2)*max(tot1,tot2);
cout<<ans-m;
}
洛谷 P3505 [POI2010]TEL-Teleportation的更多相关文章
- 洛谷P3502 [POI2010]CHO-Hamsters感想及题解(图论+字符串+矩阵加速$dp\&Floyd$)
洛谷P3502 [POI2010]CHO-Hamsters感想及题解(图论+字符串+矩阵加速\(dp\&Floyd\)) 标签:题解 阅读体验:https://zybuluo.com/Junl ...
- [洛谷P3501] [POI2010]ANT-Antisymmetry
洛谷题目链接:[POI2010]ANT-Antisymmetry 题目描述 Byteasar studies certain strings of zeroes and ones. Let be su ...
- 洛谷 P3496 [POI2010]GIL-Guilds
P3496 [POI2010]GIL-Guilds 题目描述 King Byteasar faces a serious matter. Two competing trade organisatio ...
- 洛谷 P3507 [POI2010]GRA-The Minima Game
P3507 [POI2010]GRA-The Minima Game 题目描述 Alice and Bob learned the minima game, which they like very ...
- 【字符串】【hash】【倍增】洛谷 P3502 [POI2010]CHO-Hamsters 题解
这是一道字符串建模+图论的问题. 题目描述 Byteasar breeds hamsters. Each hamster has a unique name, consisting of lo ...
- 洛谷P3507 [POI2010]GRA-The Minima Game
题目描述 Alice and Bob learned the minima game, which they like very much, recently. The rules of the ga ...
- [洛谷P3509][POI2010]ZAB-Frog
题目大意:有$n$个点,每个点有一个距离(从小到大给出),从第$i$个点跳一次,会跳到距离第$i$个点第$k$远的点上(若有两个点都是第$k$远,就跳到编号小的上).问对于从每个点开始跳,跳$m$次, ...
- [洛谷P3512 [POI2010]PIL-Pilots]
题目链接: 传送门走这里 题目分析: 感觉不是很难啊--不像是蓝题(AC量也不像)恶意评分? 少打了一个+1调了半天,就这样居然还能过60pts?我思路和题解第一篇高度重合是什么鬼啊,太过分了吧本来还 ...
- [bzoj2088]P3505 [POI2010]TEL-Teleportation
洛谷 bzoj 用了分层图的思想 题意 给一张图,要求你再尽可能的多连边,使得从1到2至少要经过5条边 没啥复杂的公式,讲解都在注释里 #include<cstdio> #include& ...
随机推荐
- QQ音乐
import re import requestsimport json class Search: def __init__(self, song): ''' self.vkey_url ---&g ...
- 今日SGU 6.5
sgu 160 题意:给你n个数字 数字范围 1 到 m 问你从中取出任意数量的数字使得这些数字的积取模m最大 收获:dp,记录dp的路径 #include<bits/stdc++.h> ...
- 题解 P1198 【[JSOI2008]最大数】
说起来这还是蒟蒻AC的第一道省选线段树呢. 这道题和其他线段树最大的不同就是在于本题数组一直在增大. 寻常的线段树蒟蒻习惯用如下的结构体储存,然而对于此题就不行了: struct node{ int ...
- windows開始菜单和任务栏图标显示空白而且点击时候显示项目已被移动或删除
这几天实验室老常常自己主动断电.这是非常蛋疼的一件事,这不上次断电就出事了.来电后开机,点击任务栏上的程序全都显示为无法打开此项目,该项目已被移动.删除.原因是图标缓存丢失,可能是突然断电引起的,也有 ...
- 一个美丽的java烟花程序
<img src="http://img.blog.csdn.net/20150625104525974?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi ...
- USACO2002 Open:雄伟的山峦
简要题意: 奶牛们在落基山下避暑,从它们的房子向外望去,可以看到N 座山峰构成的山峦,奶牛发现每座山峰都是等腰三角形,底边长度恰好是高度的两倍.所以山峰的顶点坐标可由两个底部端点求出.设i 座第山峰的 ...
- 使用sh库执行shell命令
python中执行shell命令 之前执行shell命令多是通过os.system(shell命令)的方式来执行,比较麻烦. 了解到sh是一个比subprocess好的库,能够执行shell命令 1. ...
- javaScript 原型与原型链学习笔记
javaScript中,原型是常用到一种方式,它能降低储存占用,写出更高效的代码 原型常用到的则是prototype属性 JavaScript prototype 属性 定义和用法 prototype ...
- 最新华为数通HCNP-随堂培训视频课程 大牛讲解高清带实验
2017年最新华为数通HCNP-随堂培训视频课程 大牛讲解高清带实验 2017最新的华为中级HCNP培训,数通方向,讲解非常牛高清课程附带实验. 华为数通HCNP-2017年最新随堂培训视频(高清)\ ...
- 直接修改Android软件数据库来改变软件设置实例一则
昨天把K860i刷了机,刷到了最新的CyanogenMod 10.1,使用起来各种流畅舒服,不过却由于内外置SD卡的挂载点的改变,造成了一些困扰,现记录如下. 平时里由于极少把手机连接 ...