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\)与\ ...
随机推荐
- [luogu] P3745 [六省联考2017]期末考试 (贪心)
P3745 [六省联考2017]期末考试 题目描述 有 \(n\) 位同学,每位同学都参加了全部的 \(m\) 门课程的期末考试,都在焦急的等待成绩的公布. 第 \(i\) 位同学希望在第 \(t_i ...
- java有参无参构造器的的执行顺序
这里拿了用数组构造栈的一段代码说明一下 public class StackArray<E> { private Object[] data = null; private int max ...
- UVA 11478 Halum
Halum Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVA. Original ID: 114 ...
- C++ OTL MySQL(Windows/Linux) V8.1
Windows每秒钟10000条以上插入:Linux每秒插入300条以上.Q269752451 输出截图: Linux输出: Windows输出: 有须要的联系 QQ 3508551694 water ...
- XML 解析---dom解析和sax解析
眼下XML解析的方法主要用两种: 1.dom解析:(Document Object Model.即文档对象模型)是W3C组织推荐的解析XML的一种方式. 使用dom解析XML文档,该解析器会先把XML ...
- poj3249 Test for job 【图的DAG dp】
#include <cstdio> #include <cstdlib> #include <iostream> #include <algorithm> ...
- TexturePacker 算法
代码 预览
- awk双文件互相匹配查找
awk双文件互相匹配查找 要求: 文件a: 10/05766798607,11/20050325191329,29/0.1,14/05766798607 10/05767158557,11/200 ...
- Stop being a perfectionist
节选自 7 Things You Need To Stop Doing To Be More Productive, Backed By Science “We found that perfecti ...
- postMan模拟get和post请求,支持局域网和外网
chrome应用postMan,可以安装一下,非常方便. 可以FQ下载安装. post参数要在body中设置 get参数直接在url中