Cod sursa(job #542349)

Utilizator S7012MYPetru Trimbitas S7012MY Data 26 februarie 2011 12:13:07
Problema Gossips Scor 0
Compilator cpp Status done
Runda Romanian Master in Mathematics and Sciences 2011, Ziua 2 Marime 0.8 kb
#include <iostream>
#include <fstream>
#include <vector>
#define DN 100005
using namespace std;

int rang[DN][DN],pre[DN],n,m,q;
vector<int> gr[DN];

int find(int el) {
    int i;
    for(i=el;i!=pre[i];i=pre[i]);
    return i;
}

int main()
{
    ifstream f("gossips.in");
    ofstream g("gossips.out");
    f>>n>>m>>q;
    for(int i=1; i<=n; ++i) {
        rang[i]=1;
        pre[i]=i;
    }
    for(int i=1; i<=m; ++i) {
        int x,y;
        f>>x>>y;
        pre[y]=x;
    }
    for(int i=1; i<=q; ++i) {
        int s,x,y;
        f>>s>>x>>y;
        if(1==s) {
            x=find(x);
            for(int j=0; j<gr[x].size(); ++j) if(gr[x][j]==y) {
                g<<"YES\n";
                continue;
            }
            g<<"NO\n";
        }else gr[find(x)].push_back(y);
    }
    return 0;
}