[BZOJ-1006&洛谷P3196][HNOI2008]神奇的国度--【图的染色-最大势MCS算法】

洛谷:时间限制1.00s 内存限制125.00MB

Time Limit: 20 Sec  Memory Limit: 162 MB

题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1006

洛谷:https://www.luogu.com.cn/problem/P3196

Description

  K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA
相互认识,是简洁高效的.为了巩固三角关系,K国禁止四边关系,五边关系等等的存在.所谓N边关系,是指N个人 A1A2
...An之间仅存在N对认识关系:(A1A2)(A2A3)...(AnA1),而没有其它认识关系.比如四边关系指ABCD四个人 AB,BC,C
D,DA相互认识,而AC,BD不认识.全民比赛时,为了防止做弊,规定任意一对相互认识的人不得在一队,国王相知道,
最少可以分多少支队。

Input

  第一行两个整数N,M。1<=N<=10000,1<=M<=1000000.表示有N个人,M对认识关系. 接下来M行每行输入一对朋

Output

  输出一个整数,最少可以分多少队

Sample Input

4 5
1 2
1 4
2 4
2 3
3 4

Sample Output

3

HINT

  一种方案(1,3)(2)(4)


emmm,画个图看看就知道它要求的是图的最小染色问题,对于一个图染色,相邻的点颜色不一样,问最少可以用多少种颜色。

这里有个最大势算法,其具体过程如下:

1.刚开始的每个点的势为0,任意取出一个点删除。

2.将与删除点相连的点的势+1,取出最大势的点删除。

3.重复操作2,直到所有的点都被删除。

那么就会有一个删除序列,而这个删除序列中出现了多少种不同的势,那么最小的颜色数就是多少。

在洛谷的话第二个测试点会被卡时间,开个氧气优化就好了,BZOJ没这个问题。

以下是AC代码:

#include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm>
using namespace std;

const int mac=1e6+10;
const int mac2=1e4+10;

struct node
{
    int to,next,w;
}eg[mac<<1];
int head[mac2],cnt=0,vis[mac2],color[mac2],point[mac2];
struct pot
{
    int val,id;
    bool operator <(const pot&a)const{
        return val<a.val;
    }
};

void add(int u,int v)
{
    eg[++cnt]=node{v,head[u],0};
    head[u]=cnt;
}

int main()
{
    int n,m;
    scanf ("%d%d",&n,&m);
    memset(head,-1,sizeof head);
    for (int i=1; i<=m; i++){
        int u,v;
        scanf ("%d%d",&u,&v);
        add(u,v);add(v,u);
    }
    priority_queue<pot>q;
    q.push(pot{0,1});
    int ans=0;
    while (!q.empty()){
        pot now=q.top();
        q.pop();
        if (vis[now.id]) continue;
        vis[now.id]=1;
        int u=now.id;
        if (!color[now.val]) ans++,color[now.val]=1;
        for (int i=head[u]; i!=-1; i=eg[i].next){
            int v=eg[i].to;
            if (vis[v]) continue;
            point[v]++;
            q.push(pot{point[v],v});
        }
    }
    printf("%d\n",ans);
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/lonely-wind-/p/12191171.html
今日推荐