Description

给给全有一个NN个点NN条边的有向图,点的的编号从11到NN

给给全的图有NN条边,形如:(p1,1),(p2,2),...,(pN,N)(p1,1),(p2,2),...,(pN,N),保证图是弱连通的。其中,(u,v)(u,v)表示一条从点uu到vv的单向边。“弱连通”是指:假如所有的边都是双向边,则图连通图

给给全为每个点设置了一个权值,aiai表示点ii的权值。因为他很给给,所以他希望图满足如下性质:

  • 所有aiai都是非负整数
  • 对于每条边(i,j)(i,j),满足ai≠ajai≠aj
  • 对于所有i,x(0≤x≤ai)i,x(0≤x≤ai),存在一条边(i,j)(i,j)满足x=ajx=aj

请你帮给给全判断一下,这样给给的图是否存在呢?

Input

第一行一个正整数NN

第二行NN个正整数,第ii个数表示pipi

Output

如果存在这样的图,输出POSSIBLE,否则输出IMPOSSIBLE

Sample Input

Sample #1
4
2 3 4 1 Sample #2
3
2 3 1 Sample #3
4
2 3 1 1 Sample #4
6
4 5 6 5 6 4

Sample Output

Sample #1
POSSIBLE Sample #2
IMPOSSIBLE Sample #3
POSSIBLE Sample #4
IMPOSSIBLE

HINT

样例一的一种可行点权分配是{ai}={0,1,0,1}{ai}={0,1,0,1}或{ai}={1,0,1,0}{ai}={1,0,1,0}

样例三的一种可行点权分配是{ai}={2,0,1,0}{ai}={2,0,1,0}

2≤N≤2000002≤N≤200000

1≤pi≤Npi≠i1≤pi≤Npi≠i

保证图是弱联通的

本题采用subtask。分别存在:

  • 20%20%的数据满足n≤18n≤18;
  • 20%20%的数据随机;
  • 20%20%的数据中pipi互不相同。

题面修正:

  • aiai非负;
  • 是0≤x<ai0≤x<ai;
  • 你需要设置的是aiai。

Sol

orzckw

这题放f有点简单了吧?

Code

#include <bits/stdc++.h>
using namespace std;
int n,x=1,mx,mn,cnt,vis[200005],fa[200005],cir[200005],a[200005];vector<int> e[200005];
int dfs(int x)
{
for(int i=0;i<e[x].size();i++) if(!cir[e[x][i]]) dfs(e[x][i]);
for(int i=0;i<e[x].size();i++) if(!cir[e[x][i]]) vis[a[e[x][i]]]=1;
for(a[x]=0;vis[a[x]];a[x]++);
for(int i=0;i<e[x].size();i++) if(!cir[e[x][i]]) vis[a[e[x][i]]]=0;
return 0;
}
int main()
{
scanf("%d",&n),mx=-1,mn=n+1,cnt=0;
for(int i=1;i<=n;i++) scanf("%d",&fa[i]),e[fa[i]].push_back(i);
while(!vis[x]) vis[x]=1,x=fa[x];
memset(vis,0,sizeof(vis));while(!cir[x]) cir[x]=1,x=fa[x];
for(int i=1;i<=n;i++) if(cir[i]) dfs(i),mx=max(a[i],mx),mn=min(a[i],mn),cnt++;
(mx==mn&&cnt%2==1)?printf("IMPOSSIBLE\n"):printf("POSSIBLE\n");
}

[arc079f] Namori Grundy 分类讨论的更多相关文章

  1. [Arc079F] Namori Grundy

    [Arc079F] Namori Grundy 题目大意: 一个有向弱联通环套树. 一个点的sg值等于出边连向点的sg值的mex. 试问是否有办法给每个点分配sg值? 试题分析 题目大意把一些难点跳过 ...

  2. Codeforces 460D Little Victor and Set --分类讨论+构造

    题意:从区间[L,R]中选取不多于k个数,使这些数异或和尽量小,输出最小异或和以及选取的那些数. 解法:分类讨论. 设选取k个数. 1. k=4的时候如果区间长度>=4且L是偶数,那么可以构造四 ...

  3. BZOJ-1067 降雨量 线段树+分类讨论

    这道B题,刚的不行,各种碎点及其容易忽略,受不鸟了直接 1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 2859 ...

  4. UVaLive 6862 Triples (数学+分类讨论)

    题意:给定一个n和m,问你x^j + y^j = z^j 的数量有多少个,其中0 <= x <= y <= z <= m, j = 2, 3, 4, ... n. 析:是一个数 ...

  5. 枚举(分类讨论):BZOJ 1177: [Apio2009]Oil

    1177: [Apio2009]Oil Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 1477  Solved: 589[Submit] Descri ...

  6. Educational Codeforces Round 63 (Rated for Div. 2) D. Beautiful Array 分类讨论连续递推dp

    题意:给出一个 数列 和一个x 可以对数列一个连续的部分 每个数乘以x  问该序列可以达到的最大连续序列和是多少 思路: 不是所有区间题目都是线段树!!!!!! 这题其实是一个很简单的dp 使用的是分 ...

  7. 【cf789B】Masha and geometric depression(分类讨论/暴力)

    B. Masha and geometric depression 题意 在黑板上写数列,首项是b,公比是q,超过l时就停止不写.给定m个数,遇到后跳过不写.问一共写多少个数,如果无穷个输出inf. ...

  8. P2331 [SCOI2005]最大子矩阵 (动规:分类讨论状态)

    题目链接:传送门 题目: 题目描述 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. 输入输出格式 输入格式: 第一行为n,m,k( ...

  9. UVa 11722 Joining with Friend (几何概率 + 分类讨论)

    题意:某两个人 A,B 要在一个地点见面,然后 A 到地点的时间区间是 [t1, t2],B 到地点的时间区间是 [s1, s2],他们出现的在这两个区间的每个时刻概率是相同的,并且他们约定一个到了地 ...

随机推荐

  1. 【Arduino】、Arduino+ESP8266上传至oneNet云

    一.硬件简介 1. Arudino 是一种开源的电子平台,该平台最初主要基于AVR单片机的微控制器和相应的开发软件,包含硬件(各种型号的Arduino板)和软件(Arduino IDE). 2. ES ...

  2. 因式分解 · Factor Combinations

    [抄题]: 给出 n = 8 返回 [[2,2,2],[2,4]] // 8 = 2 x 2 x 2 = 2 x 4 [暴力解法]: 时间分析: 空间分析: [思维问题]: [一句话思路]: 类似于全 ...

  3. 1014_C语言的文法

    程序-> <外部声明><程序><外部声明> 外部声明-> <函数定义>|<声明> 函数定义-> <函数类型>& ...

  4. msys2 + clion安装所需的mingw64编译环境

    pacman -S mingw-w64-x86_64-toolchain 输出结果为: $ pacman -S mingw-w64-x86_64-toolchain:: 在组 mingw-w64-x8 ...

  5. linux中的 tar命令的 -C 参数,以及其它一些参数

    tar命令的-C参数    $ tar -cvf file2.tar /home/usr2/file2 tar: Removing leading '/' from members names hom ...

  6. UVa 1616 Caravan Robbers (二分+贪心)

    题意:给定 n 个区间,然后把它们变成等长的,并且不相交,问最大长度. 析:首先是二分最大长度,这个地方精度卡的太厉害了,都卡到1e-9了,平时一般的1e-8就行,二分后判断是不是满足不相交,找出最长 ...

  7. eclipse 在线安装 properties 插件

    help - install new software - work with site http://propedit.sourceforge.jp/eclipse/updates/ 要耐心等待

  8. 排序:桶排序Bucket sort

    补充说明三点 1,桶排序是稳定的 2,桶排序是常见排序里最快的一种,比快排还要快…大多数情况下 3,桶排序非常快,但是同时也非常耗空间,基本上是最耗空间的一种排序算法 无序数组有个要求,就是成员隶属于 ...

  9. SQLITE3的锁以及事务

    以下内容摘自<SQLITE权威指南>,下载地址http://download.csdn.net/detail/cxjchen/5643391   SQLITE的锁 在SQLite中,锁和事 ...

  10. logback 热修改

    <configuration scan="true" scanPeriod="60 seconds" debug="false"> ...