-
J - Punching Power
- Gym - 101670J
- 题意:
- The distance between any two boxing machines has to be at least 1.3 meters
- 思路:
- 小于1.3点的建图求最大匹配数。
- 最后符合条件的点的数目就是最大独立集数。
-
#include<bits/stdc++.h> using namespace std; #define maxn 155555 struct node { int x,y; } a[maxn]; int n,m,net[maxn],sum,ans; bool vis[maxn]; vector<int>mmp[maxn]; bool dfs(int x) { for(int i=0; i<mmp[x].size(); i++) { int v=mmp[x][i]; if(!vis[v]) { vis[v]=1; if(net[v]==0||dfs(net[v])) { net[v]=x; net[x]=v; return true; } } } return false; } int main() { while(~scanf("%d",&n)) { sum=0; for(int i=1; i<=n; i++) { scanf("%d%d",&a[i].x,&a[i].y); mmp[i].clear(); vis[i]=net[i]=0; } for(int i=1; i<=n; i++) for(int j=i+1; j<=n; j++) { if(abs(a[i].x-a[j].x)+abs(a[i].y-a[j].y)<=1) { mmp[i].push_back(j); mmp[j].push_back(i); } } for(int i=1; i<=n; i++) { if(net[i]==0) { memset(vis,0,sizeof(vis)); if(dfs(i)) sum++; } } printf("%d\n",n-sum); } return 0; }
J - Punching Power -最大独立集
猜你喜欢
转载自blog.csdn.net/BePosit/article/details/82498929
今日推荐
周排行