Gym 101097G Party

来源:互联网 发布:删除的sql语句怎么写 编辑:程序博客网 时间:2024/05/17 21:05

每次找到一条没有被完全覆盖的边,删掉两边的点。因为每次删掉的两个点至少有一个不在团中,最坏情况下也会留下n个在团中的点。

#include<cstdio>#include<algorithm>using namespace std;int map[3010][3010],out[3010],n,m;int main(){    freopen("party.in","r",stdin);    freopen("party.out","w",stdout);    int u,v;    scanf("%d%d",&n,&m);    while (m--)    {        scanf("%d%d",&u,&v);        map[u][v]=map[v][u]=1;    }    for (int i=1;i<=n;i++)        if (!out[i])            for (int j=i+1;j<=n;j++)                if (!out[j]&&!map[i][j])                {                    out[i]=out[j]=1;                    break;                }    for (int i=1,j=0;j<n/3;i++)        if (!out[i])        {            printf("%d ",i);            j++;        }}
0 0
原创粉丝点击