题目解析
给定m对人的关系
再给定k对人 求出这k对人之间的关系
解题思路
并查集求两个人是否有共同好友
再来个二维数组去判断两个人是否有敌对关系
最后按照题意输出指定字符串即可
代码
import java.io.*;
import java.math.*;
import java.util.*;
public class Main
{
static int N = (int) 1e2;
static int fa[] = new int[N + 10];
static int father(int x)
{
if (fa[x] != x)
fa[x] = father(fa[x]);
return fa[x];
}
public static void main(String[] args) throws IOException
{
int n = ini(), m = ini(), k = ini();
for (int i = 1; i <= n; i++)
fa[i] = i;
boolean di[][] = new boolean[N + 10][N + 10];
while (m-- > 0)
{
int a = ini(), b = ini(), op = ini();
if (op == 1)
{
int x = father(a), y = father(b);
fa[x] = y;
} else
di[a][b] = di[b][a] = true;
}
while (k-- > 0)
{
int a = ini();
int b = ini();
int x = father(a), y = father(b);
if (x == y && !di[a][b])
out.println("No problem");
else if (x != y && !di[a][b])
out.println("OK");
else if (di[a][b] && x == y)
out.println("OK but...");
else if (di[a][b] && x != y)
out.println("No way");
}
out.flush();
out.close();
}
static StreamTokenizer sc = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
static PrintWriter out = new PrintWriter(System.out);
static int ini() throws IOException
{
sc.nextToken();
return (int) sc.nval;
}
}