摘要:
输入:动物个数n以及k句话,接着输入k行,每一行形式为:d x y, 在输入时可以先判断题目所说的条件2和3,即: 1>若(x>n||y>n):即当前的话中x或y比n大,则假话数目num加1. 2>若(x==2&&x==y):即当前的话表示x吃x,则假话数目num加1. 而不属于这两种情况外的话语要利用并查集进行判断当前的话是否与此前已经说过的话相冲突. struct node { int parent; //p[i].parent表示节点i的父节点 int relation; //p[i].relation表示节点i与其父节点(即p[i].parent 阅读全文
摘要:
1 # include <stdio.h> 2 # define N 1024 3 int parent[N]; 4 int rank[N]; 5 int findset(int x) 6 { 7 if (x != parent[x]) 8 x = findset(parent[x]); 9 return parent[x];10 }11 void init(int n)//接受城镇数12 {13 int i;14 for (i=1; i<=n; ++i)15 {16 parent[i] = i;17 r... 阅读全文
摘要:
1 # include <stdio.h> 2 const int max = 50005; 3 int rank[max]; 4 int parent[max]; 5 int maxnum; 6 int findset(int x) 7 { 8 if (x != parent[x]) 9 x = findset(parent[x]);10 return parent[x];11 }12 void init(int n)13 {14 int i;15 for (i=1; i<=n; ++i)16 {17 parent[i... 阅读全文