博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[HNOI2008]神奇的国度
阅读量:5174 次
发布时间:2019-06-13

本文共 1240 字,大约阅读时间需要 4 分钟。

题解:

  MCS算法.详细说明请见cdq的论文--弦图和区间图.

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #define MAXN 100001011 #define RG register12 #define LL long long int13 using namespace std;14 const int INF=1e9;15 const int mod=31011;16 struct node{17 int next;18 int to;19 }t[MAXN*2];20 int head[MAXN*2],num;21 int n,m;22 int ans;23 int du[MAXN],vis[MAXN],q[MAXN];24 int col[MAXN],used[MAXN];25 void add(int from,int to)26 {27 t[++num].next=head[from];28 t[num].to=to;29 head[from]=num;30 }31 int main()32 {33 freopen("1.in","r",stdin);34 scanf("%d%d",&n,&m);int x,y;35 for(int i=1;i<=m;i++){36 scanf("%d%d",&x,&y);add(x,y);add(y,x);37 }38 for(int i=n;i>=1;i--){39 int p=0;40 for(int j=1;j<=n;j++) if(!vis[j] && du[j]>=du[p]) p=j;41 q[i]=p;vis[p]=1;42 for(int j=head[p];j;j=t[j].next) du[t[j].to]++;43 }44 for(int i=n;i>=1;i--){45 int p=q[i];46 for(int j=head[p];j;j=t[j].next) used[col[t[j].to]]=p;47 int j;48 for(j=1;;j++) if(used[j]!=p) break;49 col[p]=j;if(j>ans) ans=j;50 }51 printf("%d\n",ans);52 return 0;53 }

 

转载于:https://www.cnblogs.com/Landlord-greatly/p/8092739.html

你可能感兴趣的文章
Notes of Daily Scrum Meeting(12.8)
查看>>
Apriori算法
查看>>
lr_start_transaction/lr_end_transaction事物组合
查看>>
.NET CLR基本术语
查看>>
ubuntu的home目录下,Desktop等目录消失不见
查看>>
建立,查询二叉树 hdu 5444
查看>>
[Spring框架]Spring 事务管理基础入门总结.
查看>>
2017.3.24上午
查看>>
Python-常用模块及简单的案列
查看>>
LeetCode 159. Longest Substring with At Most Two Distinct Characters
查看>>
jquery动态移除/增加onclick属性详解
查看>>
JavaScript---Promise
查看>>
Django基于admin的stark组件创建(一)
查看>>
C. Tanya and Toys_模拟
查看>>
springboot jar包运行中获取资源文件
查看>>
基于FPGA实现的高速串行交换模块实现方法研究
查看>>
Java Scala获取所有注解的类信息
查看>>
delphi ,安装插件
查看>>
case when then的用法-leetcode交换工资
查看>>
11.28.cookie
查看>>