hdu 5277 YJC counts stars
hdu 5277 YJC counts stars
题意:
给出一个平面图,n个点,m条边,直线边与直线边之间不相交,求最大团的数目。
限制:
1 <= n <= 1000
思路:
因为平面图,直线边与直线边之间不相交,所以最大团的大小最大为4,m<=3*n-6。
所以对于答案4,枚举两条边。
对于答案3,枚举一条边一个点。
/*hdu 5277
题意:
给出一个平面图,n个点,m条边。直线边与直线边之间不相交,求最大团的数目。 限制:
1 <= n <= 1000
思路:
因为平面图。直线边与直线边之间不相交,所以最大团的大小最大为4,m<=3*n-6。
所以对于答案4,枚举两条边;
对于答案3,枚举一条边一个点;
*/
#include<iostream>
#include<cstdio>
#include<set>
#include<cstring>
#include<algorithm>
using namespace std;
#define MP make_pair
const int N=5000;
int fr[N],to[N];
int _set[N/4][N/4];
bool in(int f,int t){
if(f==t) return false;
if(f>t) swap(f,t);
return _set[f][t]!=0;
}
bool ok(int i,int j){
if(in(fr[i],fr[j]) && in(fr[i],to[j]) && in(to[i],fr[j]) && in(to[i],to[j])) return true;
return false;
} bool vis[9000010];
int get_id1(int i,int j){
int a[4];
a[0]=fr[i];
a[1]=to[i];
a[2]=fr[j];
a[3]=to[j];
sort(a,a+4);
return _set[a[0]][a[1]]*3000+_set[a[2]][a[3]];
}
int four(int m){
memset(vis,0,sizeof(vis));
int cnt=0;
for(int i=0;i<m;++i){
for(int j=i+1;j<m;++j){
if(ok(i,j)){
int id=get_id1(i,j);
if(vis[id]) continue;
++cnt;
vis[id]=1;
}
}
}
return cnt;
}
int get_id(int a,int b,int c){
if(a>b) swap(a,b);
if(b>c) swap(b,c);
int ret=_set[a][b];
ret=ret*1000+c;
return ret;
}
int three(int n,int m){
memset(vis,0,sizeof(vis));
int cnt=0;
for(int i=1;i<=n;++i){
for(int j=0;j<m;++j){
if(fr[j]==i || to[j]==i) continue;
//cout<<fr[j]<<' '<<i<<endl;
//cout<<to[j]<<' '<<i<<endl;
if(in(i,fr[j]) && in(i,to[j])){
int id=get_id(i,fr[j],to[j]);
//cout<<id<<endl;
if(vis[id]) continue;
++cnt;
vis[id]=1;
}
}
}
return cnt;
}
void gao(int n,int m){
int ans=4;
int cnt;
cnt=four(m);
if(cnt){ printf("%d %d\n",ans,cnt); return ;}
--ans;
cnt=three(n,m);
//cout<<cnt<<endl;
if(cnt){ printf("%d %d\n",ans,cnt); return ;}
--ans;
cnt=m;
//cout<<cnt<<endl;
if(cnt){ printf("%d %d\n",ans,cnt); return ;}
printf("%d %d\n",1,n);
}
int main(){
int n,m;
int x,y;
while(scanf("%d%d",&n,&m)!=EOF){
memset(_set,0,sizeof(_set));
for(int i=0;i<n;++i){
scanf("%d%d",&x,&y);
}
for(int i=0;i<m;++i){
scanf("%d%d",&fr[i],&to[i]);
if(fr[i]>to[i]) swap(fr[i],to[i]);
_set[fr[i]][to[i]]=i+1;
}
gao(n,m);
}
return 0;
}
hdu 5277 YJC counts stars的更多相关文章
- hdu 5277 YJC counts stars 暴力
YJC counts stars Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php? ...
- hdu 5276 YJC tricks time 数学
YJC tricks time Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?p ...
- HDU - 5276 YJC tricks time
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5276 Sample Input 99000 0 Sample Output 00:01:30 ...
- hdu 1541/poj 2352:Stars(树状数组,经典题)
Stars Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- hdu 4486 Pen Counts
Pen Counts Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- hdu 5279 YJC plays Minecraft——生成函数
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5279 令 n 个点的树的 EGF 是 g(x) ,则 \( g(x) = \sum\limits_{i=0 ...
- HDU 5279 YJC plays Minecraft(NTT+分治)
题意 有 \(n\) 个岛屿,第 \(i\) 个岛屿上有一张 \(a_i\) 的完全图.其中第 \(i\) 张完全图的 \(a_i\) 号节点和 \(i+1\) 号岛屿的 \(1\) 号节点有边相连( ...
- HDU 5279 YJC plays Minecraft (分治NTT优化DP)
题目传送门 题目大意:有$n$个小岛,每个小岛上有$a_{i}$个城市,同一个小岛上的城市互相连接形成一个完全图,第$i$个小岛的第$a_{i}$个城市和第$i+1$个小岛的第$1$个城市连接,特别地 ...
- 题解 HDU 5279 YJC plays Minecraft
题目传送门 题目大意 给出\(n\)以及\(a_{1,2,...,n}\),表示有\(n\)个完全图,第\(i\)个完全图大小为\(a_i\),这些完全图之间第\(i\)个完全图的点\(a_i\)与\ ...
随机推荐
- stl里面stack的注意事项
1. pop是不返回元素的.因为不能返回引用,只能返回实例.而这个实例是在函数里面初始化的,所以必须在外面再赋值和初始化.而如果实例复制失败,会产生丢失. 2. 而top是可以返回引用的.实际上,返回 ...
- java.lang.ClassNotFoundException: org.jaxen.JaxenException
java.lang.ClassNotFoundException: org.jaxen.JaxenException java.lang.ClassNotFoundException: org.jax ...
- C++_关于const 的全面总结
C++中的constkeyword的使用方法很灵活.而使用const将大大改善程序的健壮性.本人依据各方面查到的资料进行总结例如以下,期望对朋友们有所帮助. Const 是C++中经常使用的类型修饰符 ...
- JavaScript DOM(一)
文件夹: DOM家谱树 节点的基本属性和方法 document与getElement方法 DOM家谱树 DOM能够将不论什么HTML或XML文档描绘成一个由多层次节点构成的结构.当中节点被分为几种不同 ...
- GitBlit中出现 error: remote unpack failed: error Missing tree
clu@WASYGSHA01-1020 MINGW64 /d/ChuckLu/Git/Edenred/LISA_5.0.0.0 (local)$ git push origin preaction:p ...
- ORA-01119、ORA-27040
SQL> alter tablespace DRSYS add datafile '/ora_data/drsys02.dbf' size 1000m;alter tablespace DRSY ...
- Linux下处理JSON的命令行工具:jq---安装
转自:https://blog.csdn.net/Sunny_much/article/details/50668871 JSON是前端编程经常用到的格式.Linux下也有处理处理JSON的 ...
- Kafka Consumer2
本文记录了和conumser相关的几个类. 首先是RequestFuture这个类,consumer和服务端通信使用它作为返回值. 其次是HeartBeat机制,consumer和coordinato ...
- 092117-6265-01.dmp 蓝屏日志文件
Microsoft (R) Windows Debugger Version 10.0.15063.137 AMD64 Copyright (c) Microsoft Corporation. All ...
- solarwind之安装
1. 安装组件 2. 安装组件sql 3. 安装 4. 接受协议 5. 安装路径 6. 安装状态 7. 继续 8. 激活 9. 完成安装