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

  1. hdu 5277 YJC counts stars 暴力

    YJC counts stars Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php? ...

  2. hdu 5276 YJC tricks time 数学

    YJC tricks time Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?p ...

  3. HDU - 5276 YJC tricks time

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5276   Sample Input 99000 0   Sample Output 00:01:30 ...

  4. hdu 1541/poj 2352:Stars(树状数组,经典题)

    Stars Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  5. hdu 4486 Pen Counts

    Pen Counts Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  6. hdu 5279 YJC plays Minecraft——生成函数

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5279 令 n 个点的树的 EGF 是 g(x) ,则 \( g(x) = \sum\limits_{i=0 ...

  7. HDU 5279 YJC plays Minecraft(NTT+分治)

    题意 有 \(n\) 个岛屿,第 \(i\) 个岛屿上有一张 \(a_i\) 的完全图.其中第 \(i\) 张完全图的 \(a_i\) 号节点和 \(i+1\) 号岛屿的 \(1\) 号节点有边相连( ...

  8. HDU 5279 YJC plays Minecraft (分治NTT优化DP)

    题目传送门 题目大意:有$n$个小岛,每个小岛上有$a_{i}$个城市,同一个小岛上的城市互相连接形成一个完全图,第$i$个小岛的第$a_{i}$个城市和第$i+1$个小岛的第$1$个城市连接,特别地 ...

  9. 题解 HDU 5279 YJC plays Minecraft

    题目传送门 题目大意 给出\(n\)以及\(a_{1,2,...,n}\),表示有\(n\)个完全图,第\(i\)个完全图大小为\(a_i\),这些完全图之间第\(i\)个完全图的点\(a_i\)与\ ...

随机推荐

  1. [luogu] P3745 [六省联考2017]期末考试 (贪心)

    P3745 [六省联考2017]期末考试 题目描述 有 \(n\) 位同学,每位同学都参加了全部的 \(m\) 门课程的期末考试,都在焦急的等待成绩的公布. 第 \(i\) 位同学希望在第 \(t_i ...

  2. java有参无参构造器的的执行顺序

    这里拿了用数组构造栈的一段代码说明一下 public class StackArray<E> { private Object[] data = null; private int max ...

  3. UVA 11478 Halum

    Halum Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVA. Original ID: 114 ...

  4. C++ OTL MySQL(Windows/Linux) V8.1

    Windows每秒钟10000条以上插入:Linux每秒插入300条以上.Q269752451 输出截图: Linux输出: Windows输出: 有须要的联系 QQ 3508551694 water ...

  5. XML 解析---dom解析和sax解析

    眼下XML解析的方法主要用两种: 1.dom解析:(Document Object Model.即文档对象模型)是W3C组织推荐的解析XML的一种方式. 使用dom解析XML文档,该解析器会先把XML ...

  6. poj3249 Test for job 【图的DAG dp】

    #include <cstdio> #include <cstdlib> #include <iostream> #include <algorithm> ...

  7. TexturePacker 算法

    代码 预览

  8. awk双文件互相匹配查找

    awk双文件互相匹配查找 要求: 文件a:  10/05766798607,11/20050325191329,29/0.1,14/05766798607  10/05767158557,11/200 ...

  9. Stop being a perfectionist

    节选自 7 Things You Need To Stop Doing To Be More Productive, Backed By Science “We found that perfecti ...

  10. postMan模拟get和post请求,支持局域网和外网

    chrome应用postMan,可以安装一下,非常方便. 可以FQ下载安装. post参数要在body中设置 get参数直接在url中