题目

分析

我们抽象的认为一些不能互相辨认的人,被分到了一个集合,每当又有一场演出,就将每个出演的演员扔出集合,再将上次在相同集合的分在同一集合。

然后修改被分的集合和被新创建的时间,当集合只有一个数的时候不可再分。

输出每个演员所在的集合的最后修改时间,仅当该演员所在的集合中只有一个演员。

#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 ");
}

最新文章

  1. 在传统.NET Framework 上运行ASP.NET Core项目
  2. 初学ReactJS,写了一个RadioButtonList组件
  3. update select
  4. 同步内核缓冲区sync、fsync和fdatasync函数
  5. How to install VXDIAG Honda, Toyota and JLR SDD software
  6. Algorithm
  7. Linux内核ROP学习
  8. python数据类型—列表(增改删查,统计,取值,排序)
  9. hdu 4034 Graph(逆向floyd)
  10. C++ Primer 学习笔记_32_STL实践与分析(6) --再谈string类型(下)
  11. ubuntu server 11.10 安装 oracle 10g XE
  12. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ HTTP请求
  13. freemarker写select组件(二)
  14. Python爬虫开发与项目实战
  15. SQL循环表里的数据
  16. PYTHON 实现的微信跳一跳【辅助工具】仅作学习
  17. SpringBoot之加密
  18. Lost connection to MySQL server during query,MySQL设置session,global变量及网络IO与索引
  19. SNF快速开发平台MVC-自由排序组件
  20. Mike and strings 798B

热门文章

  1. 源码安装zabbix4.0.1
  2. 自动部署脚本-bash
  3. python学习之面向对象(四)
  4. 使用fiddler 抓包app 网络连接不上的原因
  5. Windows2012r2 安装SQLSERVER2017 与 SQLSERVER2016 的错误提示解决KB2919355 以及 KB2919442
  6. HDU-1204-糖果大战
  7. python3.6 使用newspaper库的Article包来快速抓取网页的文章或者新闻等正文
  8. Python进阶编程 反射
  9. python一行代码打印Love心形
  10. robots.txt写法大全和robots.txt语法的作用