|

楼主 |
发表于 2021-11-16 19:40:09
|
显示全部楼层
- #include <bits/stdc++.h>
- using namespace std;
- const int veryBig=200005;
- vector<int> Boss[veryBig];
- int Function[veryBig];
- int Amazing[veryBig];
- int wanting(int Value) {
- if ( Value != Function[Value] )
- {
- Function[Value] = wanting( Function[Value] );
- }
- return Function[Value];
- }
- void Unity(int first,int second) {
-
- int A = wanting(first);
- int B = wanting(second);
-
- if (A != B)
- {
- Function[B] = A;
- }
-
- }
- void Play()
- {
- int Number;
- int Days;
- int Color;
- int Left;
- int Right;
- int total;
-
- cin >> Number >> Days >> Color;
-
- for (int i = 1; i <= Number; i++) {
- Function[i] = i;
- cin >> Amazing[i];
- }
- for (int i = 1; i <= Days; i++) {
- cin >> Left >> Right;
- Unity(Left,Right);
- }
- for (int i = 1; i <= Number; i++) {
- Boss[wanting(i)].push_back(Amazing[i]);
- }
- for (int i = 1; i <= Number; i++) {
-
- int Length;
- Length = Boss[i].size();
- int Max;
- Max = 0;
-
- if (Length > 1) {
- map <int,int> sum;
- for (int j = 0; j<Length; j++) {
- sum[Boss[i][j]]++;
- Max = max( Max, sum[Boss[i][j]]);
- }
- total += ( Length - Max );
- }
-
- Boss[i].clear();
-
- }
- cout << total;
- }
- int main() {
- Play();
- }
复制代码 |
|