Cod sursa(job #573532)

Utilizator tinkyAndrei Ilisei tinky Data 6 aprilie 2011 12:49:31
Problema Gossips Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<fstream>
#include<vector>
using namespace std;
vector<int> g[100010];
int v[100010],n,m,q;
ifstream in("gossips.in");
int tata(int i)
{
	while (v[i])
	i=v[i];
	return i;
}
void initializare()
{
	int i,x,y;
	in>>n>>m>>q;
	for (i=1;i<=m;i++)
{
	in>>x>>y;
	v[y]=x;
}
/*for (i=1;i<=n;i++)
v[i]=tata(i);*/
}
int main()
{
	int op,x,y,i,j,ok;
	initializare();
	ofstream out("gossips.out");
	for (;q;q--)
	{
		in>>op>>x>>y;
		if (op==1)
		{
			x=tata(x);
			//y=v[y];
			ok=1;
			for (i=0;i<(int)g[x].size()&&ok;i++)
			{
				j=g[x][i];
				while (v[j]&&ok)
				{
					if (j==y)
					{
						out<<"YES\n";
						ok=0;
					}
					j=v[j];
				}
			}
			if (ok)
				out<<"NO\n";
		}
		if (op==2);
		{
			x=tata(x);
			//y=v[y];
			g[x].push_back(y);
		}
	}
}