0%

Theremustbesomethingwrong

龙龙得知2020年中国将有2000万至4000万男人娶不到老婆后。他打算好好调查一下是不是人们的感情出现问题。他对n个人进行调查,得到m条信息,每条信息表示为某两人曾经是情侣。由于他不知道这些人的性别,请你帮他判断一下,有没有同性是情侣的情况?

输入描述:

第一行两个整数n和m。
接下来m行,每行两个整数a和b,表示编号为a的人和编号为b的人,曾经是情侣,a≠b。
对于100%的数据,n的范围[2,100000],m的范围[0,100000]。

输出描述:

如果一切正常输出:it’s your own problem
如果出现同性是情侣的情况输出:there are must be something wrong

示例1
输入

4 4
1 2
2 3
3 4
4 1

输出

it’s your own problem

示例2
输入

3 3
1 2
1 3
2 3

输出

there are must be something wrong

coloring.cppview raw
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;

int n, m;
const int N = 100010;
vector<int>edges[N];
int colors[N];
bool ff = true;

void dfs(int x, int c){
colors[x] = c;
for(int i=0;i<edges[x].size();i++){
int y = edges[x][i];
if(colors[x]==colors[y]){
ff = false;
return;
}else if(colors[y]==0){
dfs(y, -c);
}
}
}

int main(){
scanf("%d%d", &n, &m);
int a, b;
for(int i=1;i<=m;i++){
scanf("%d%d", &a, &b);
edges[a].push_back(b);
edges[b].push_back(a);
}

memset(colors, 0, sizeof(colors));
for(int i=1;i<=n;i++){
if(colors[i]==0) dfs(i, 1);
}
if(ff) puts("it's your own problem");
else puts("there are must be something wrong");
return 0;
}