题目描述

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.

输入输出样例

输入样例#1: 复制

10 10
1 3
3 5
5 7
7 9
2 9
1 4
4 6
6 8
8 10
2 10
输出样例#1: 复制

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的更多相关文章

  1. 洛谷P3502 [POI2010]CHO-Hamsters感想及题解(图论+字符串+矩阵加速$dp\&Floyd$)

    洛谷P3502 [POI2010]CHO-Hamsters感想及题解(图论+字符串+矩阵加速\(dp\&Floyd\)) 标签:题解 阅读体验:https://zybuluo.com/Junl ...

  2. [洛谷P3501] [POI2010]ANT-Antisymmetry

    洛谷题目链接:[POI2010]ANT-Antisymmetry 题目描述 Byteasar studies certain strings of zeroes and ones. Let be su ...

  3. 洛谷 P3496 [POI2010]GIL-Guilds

    P3496 [POI2010]GIL-Guilds 题目描述 King Byteasar faces a serious matter. Two competing trade organisatio ...

  4. 洛谷 P3507 [POI2010]GRA-The Minima Game

    P3507 [POI2010]GRA-The Minima Game 题目描述 Alice and Bob learned the minima game, which they like very ...

  5. 【字符串】【hash】【倍增】洛谷 P3502 [POI2010]CHO-Hamsters 题解

        这是一道字符串建模+图论的问题. 题目描述 Byteasar breeds hamsters. Each hamster has a unique name, consisting of lo ...

  6. 洛谷P3507 [POI2010]GRA-The Minima Game

    题目描述 Alice and Bob learned the minima game, which they like very much, recently. The rules of the ga ...

  7. [洛谷P3509][POI2010]ZAB-Frog

    题目大意:有$n$个点,每个点有一个距离(从小到大给出),从第$i$个点跳一次,会跳到距离第$i$个点第$k$远的点上(若有两个点都是第$k$远,就跳到编号小的上).问对于从每个点开始跳,跳$m$次, ...

  8. [洛谷P3512 [POI2010]PIL-Pilots]

    题目链接: 传送门走这里 题目分析: 感觉不是很难啊--不像是蓝题(AC量也不像)恶意评分? 少打了一个+1调了半天,就这样居然还能过60pts?我思路和题解第一篇高度重合是什么鬼啊,太过分了吧本来还 ...

  9. [bzoj2088]P3505 [POI2010]TEL-Teleportation

    洛谷 bzoj 用了分层图的思想 题意 给一张图,要求你再尽可能的多连边,使得从1到2至少要经过5条边 没啥复杂的公式,讲解都在注释里 #include<cstdio> #include& ...

随机推荐

  1. Html Input disabled属性

    input的disabled: <input type="text" name="name" placeholder="请输入名称" ...

  2. Python学习七步走

    在周五的下午三点钟(为什么是这个时间?因为事情总会在周五下午三点钟发生),你收到一条通知,客户发现你的软件出现一个错误.在有了初步的怀疑后,你联系运维,查看你的软件日志以了解发生了什么,因为你记得收到 ...

  3. 紫书 例题 10-27 UVa 10214(欧拉函数)

    只看一个象限简化问题,最后答案乘4+4 象限里面枚举x, 在当前这条固定的平行于y轴的直线中 分成长度为x的一段段.符合题目要求的点gcd(x,y) = 1 那么第一段1<= y <= x ...

  4. ECNUOJ 2859 表达式的个数

    表达式的个数 Time Limit:5000MS Memory Limit:65536KBTotal Submit:47 Accepted:28 Description  世情薄,人情恶,雨送黄昏花易 ...

  5. 查看mysql正在执行的SQL语句,使用profile分析SQL执行状态

    http://qq85609655.iteye.com/blog/2113960 1)我们先通过status命令查看Mysql运行状态 mysql> status; -------------- ...

  6. cxf 实例解读

    1.sample 实例之一---java_first_pojo 服务端发布服务的方法: 1 HelloWorldImpl helloworldImpl = new HelloWorldImpl(); ...

  7. 智课雅思词汇---四、clos和cap和ced是什么意思

    智课雅思词汇---四.clos和cap和ced是什么意思 一.总结 一句话总结: cap/capt/cip/cep/ceiv:to take,seize(拿,抓住) cede:to go,yield( ...

  8. vue --- axios发post请求后台接收不到参数的三种解决方案

    最近用vue  做项目使用axios 发送post 请求时遇到了前端传数据后端接收不到的情况: 后来仔细对比发现axios传值是这样的: 而 ajax 传值是这样的: 一个 Request Paylo ...

  9. 【基础篇】Android手动卸载虚拟机程序

    adb shell (进入模拟器自带的操作系统) cd data/app (切换到apk的安装目录) rm apk文件全称 例 : rm com.test.TestActivity.apk (手动删除 ...

  10. 【实用篇】Android之应用程序实现自动更新功能

    我个人用的是友盟提供的自动更新组件,因此在这里只描述如何实用友盟提供的组件来完成程序的自动更新,步骤如下: 1.登录友盟官网,点击注册一个友盟账号. 2.注册成功后将会自动进入到添加新应用界面,选择添 ...