hdu 5277 YJC counts stars
来源:互联网 发布:网络推广要做什么 编辑:程序博客网 时间:2024/05/16 08:07
hdu 5277 YJC counts stars
题意:
给出一个平面图,n个点,m条边,直线边与直线边之间不相交,求最大团的数目。
限制:
1 <= n <= 1000
思路:
由于平面图,直线边与直线边之间不相交,所以最大团的大小最大为4,m<=3*n-6;
所以对于答案4,枚举两条边;
对于答案3,枚举一条边一个点;
题意:
给出一个平面图,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_pairconst 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;}
0 0
- hdu 5277 YJC counts stars
- hdu 5277 YJC counts stars
- HDU 5277 YJC counts stars 数星星
- hdu 5277(BestCoder Round#46 1002)YJC counts stars
- HDU 5277 YJC counts stars (二维平面图求最大团)
- hdu 5277 YJC counts stars(邻接表+构造)
- HDU 5277 YJC counts stars 最大团+暴力
- HDOJ-5277 YJC counts stars(DFS)
- 平面图最大团 HDOJ 5277 YJC counts stars
- hdu5277 YJC counts stars(最大团)
- HDU5277 YJC counts stars (图论知识平面图)
- hdu 5278 YJC plays automaton
- hdu 5278 YJC plays automaton
- HDU 5276 YJC tricks time
- hdu 4486 pen counts
- hdu 4486 Pen Counts
- Hdu 4486 Pen Counts
- hdu 4486 Pen Counts
- Web前端_jQuery_命名空间
- jquery的trigger和triggerHandler区别
- STM32F0项目进阶之实时时钟DS1307
- 8天学通MongoDB——第五天 主从复制
- [Leetcode]-Merge Sorted Array
- hdu 5277 YJC counts stars
- 8天学通MongoDB——第六天 分片技术
- 计算机顶级会议Rankings
- PHP小知识
- 文本建模常用的预处理方法——特征选择方法(CHI和IG)
- XGBoost:在Python中使用XGBoost
- CV_MAT2VEC( mat, vdata, vstep, num )
- Java抓取网页内容
- Cisco catelyst 2960交换机: