【JSOI2014】歌剧表演
来源:互联网 发布:家庭网络光纤布线 编辑:程序博客网 时间:2024/06/02 14:19
题目
分析
我们抽象的认为一些不能互相辨认的人,被分到了一个集合,每当又有一场演出,就将每个出演的演员扔出集合,再将上次在相同集合的分在同一集合。
然后修改被分的集合和被新创建的时间,当集合只有一个数的时候不可再分。
输出每个演员所在的集合的最后修改时间,仅当该演员所在的集合中只有一个演员。
#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 ");}
0 0
- 【JZOJ3864】【JSOI2014】歌剧表演
- 【JSOI2014】歌剧表演
- 【JSOI2014】歌剧表演
- [JZOJ3864]【JSOI2014】歌剧表演
- {题解}[jzoj3864]【JSOI2014】歌剧表演
- 【JSOI2014】【JZOJ 3864】歌剧表演
- JZOJ 3864. 【JSOI2014】歌剧表演
- 【JZOJ 3864】【JSOI2014】歌剧表演
- 表演
- 通缉《歌剧魅影》
- 歌剧魅影
- 古筝表演
- 【JSOI2014】支线剧情
- 【JSOI2014】支线剧情2
- bzoj5037: [Jsoi2014]电信网络
- [jzoj3865/JSOI2014]士兵部署
- bzoj5037: [Jsoi2014]电信网络
- 歌剧小杂文3:瓦格纳-颠覆歌剧的无冕之王
- 【JZOJ3871】【NOIP2014八校联考第4场第1试10.19】无聊的游戏(game)
- 50. Pow(x, n)
- ubuntu16.10分区方法
- 攻击树分析
- C++ 拷贝构造函数 的学习
- 【JSOI2014】歌剧表演
- 可过期的对象
- DataBinding玩转MVVM开发实战
- 【JZOJ3872】【NOIP2014八校联考第4场第1试10.19】圣诞树(tree)
- [BZOJ2829]信用卡凸包(凸包)
- 基础13
- bzoj 4216: Pig (分块)
- 第六章 视图
- 第六章 索引