【JSOI2014】歌剧表演
2024-09-30 04:45:17
题目
分析
我们抽象的认为一些不能互相辨认的人,被分到了一个集合,每当又有一场演出,就将每个出演的演员扔出集合,再将上次在相同集合的分在同一集合。
然后修改被分的集合和被新创建的时间,当集合只有一个数的时候不可再分。
输出每个演员所在的集合的最后修改时间,仅当该演员所在的集合中只有一个演员。
#include <cmath>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
const int maxlongint=2147483647;
const int mo=1000000007;
const int N=100005;
using namespace std;
int fa[N*20],tot,t[N*20],n,m,a[N],bz[N*20],d[N],num,sum[N];
int main()
{
scanf("%d%d",&n,&m);
sum[0]=n;
for(int i=1;i<=m;i++)
{
int k;
scanf("%d",&k);
num=0;
for(int j=1;j<=k;j++)
{
scanf("%d",&a[j]);
if(sum[fa[a[j]]]!=1 || bz[fa[a[j]]])
{
if(!bz[fa[a[j]]])
{
t[fa[a[j]]]=i;
d[++num]=fa[a[j]];
sum[fa[a[j]]]--;
bz[fa[a[j]]]=++tot;
fa[a[j]]=tot;
t[tot]=i;
sum[tot]=1;
}
else
sum[fa[a[j]]]--,fa[a[j]]=bz[fa[a[j]]],sum[fa[a[j]]]++;
}
}
for(int j=1;j<=num;j++)
bz[d[j]]=0;
}
for(int i=1;i<=n;i++)
if(sum[fa[i]]==1)
printf("%d ",t[fa[i]]);
else printf("0 ");
}
最新文章
- 在传统.NET Framework 上运行ASP.NET Core项目
- 初学ReactJS,写了一个RadioButtonList组件
- update select
- 同步内核缓冲区sync、fsync和fdatasync函数
- How to install VXDIAG Honda, Toyota and JLR SDD software
- Algorithm
- Linux内核ROP学习
- python数据类型—列表(增改删查,统计,取值,排序)
- hdu 4034 Graph(逆向floyd)
- C++ Primer 学习笔记_32_STL实践与分析(6) --再谈string类型(下)
- ubuntu server 11.10 安装 oracle 10g XE
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ HTTP请求
- freemarker写select组件(二)
- Python爬虫开发与项目实战
- SQL循环表里的数据
- PYTHON 实现的微信跳一跳【辅助工具】仅作学习
- SpringBoot之加密
- Lost connection to MySQL server during query,MySQL设置session,global变量及网络IO与索引
- SNF快速开发平台MVC-自由排序组件
- Mike and strings 798B
热门文章
- 源码安装zabbix4.0.1
- 自动部署脚本-bash
- python学习之面向对象(四)
- 使用fiddler 抓包app 网络连接不上的原因
- Windows2012r2 安装SQLSERVER2017 与 SQLSERVER2016 的错误提示解决KB2919355 以及 KB2919442
- HDU-1204-糖果大战
- python3.6 使用newspaper库的Article包来快速抓取网页的文章或者新闻等正文
- Python进阶编程 反射
- python一行代码打印Love心形
- robots.txt写法大全和robots.txt语法的作用