Mam takie zadanie:
http://solve.edu.pl/contests/download_desc/2011
Mam taki kod ale coś nie działa do końca poprawnie :-( bo przechodzi jeden test :-(
Może ktoś widzi błąd?
#include <iostream>
#include <algorithm>
using namespace std;
int tab[1000001];
bool czy[1000001];
int FIND(int u)
{
if (tab[u] != u) {
tab[u] = FIND(tab[u]);
}
return tab[u];
}
void UNION(int u, int v)
{
tab[FIND(u)] = FIND(v);
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n, q, p;
cin >> n;
for (int i = 0; i < n; i++) {
for (int w = 1; w <= 1000000; w++) {
tab[w] = w;
}
cin >> q >> p;
for (int j = 1; j <= p; j++) {
int a, b;
cin >> a >> b;
UNION(a, b);
}
int rozne = 1;
for (int b = 1; b < q; b++) {
if (tab[b] != tab[b + 1]) {
rozne++;
}
}
// cout<<rozne<<endl;
if (rozne == 1) {
czy[i] = true;
}
else
czy[i] = false;
}
for (int i = 0; i < n; i++) {
if (czy[i] == true) {
cout << "TAK"
<< "\n";
}
else
cout << "NIE"
<< "\n";
}
return 0;
}
vpiotr