Cod sursa(job #1384387)

Utilizator katakonst94Pirvu Constantin Catalin katakonst94 Data 11 martie 2015 08:11:25
Problema Stramosi Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.7 kb
#include <iostream>
#include <fstream>
#include<vector>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
vector<int>mat[250000];
vector<int>cost[250000];
char vis[250000]={};
int ndfin;
int c=0;
void dfs(int nod,int n,int rad[])
{
    ndfin=nod;
                vis[nod]=1;

   if(mat[nod].size()>0)
    {

        if(vis[mat[nod][0]]==0)
        {
           ndfin=0;
           rad[mat[nod][0]]=rad[nod];
           cost[rad[nod]].push_back(mat[nod][0]);
           dfs(mat[nod][0],n,rad);

        }




}
}
int main()
{
    int n,p;
    f>>n>>p;
    for(int i=1;i<=n;i++)
    {
        int x;
        f>>x;
        mat[i].push_back(x);
    }


    for(int i=1;i<=n;i++){
    int rad[250000];

    if(vis[i]==0)
    {
        c=0;
        rad[i]=i;
        vis[i]=1;

        dfs(i,n,rad);
        int mt=c;
            for(int o=0;o<mat[ndfin].size();o++)

         {
             ndfin=mat[ndfin][o];
             break;
         }

         if(ndfin!=i){

   cost[i].push_back(ndfin);
   for(int k=0;k<cost[ndfin].size();k++)

{
    cost[i].push_back(cost[ndfin][k]);
   // cout<<cost[ndfin][k]<<"  "<<ndfin<<" \n";

}


         }
    }



    }
    cout<<"\n\n\n\n\n";
    cout<<cost[5][1]<<"  ";
    cout<<"\n\n\n\n\n";





    for(int i=0;i<=0;i++)
    {

        for(int j=0;j<cost[i].size();j++)
        {
            cout<<cost[i][j]<<"  ";

        }
        cout<<"\n";
    }
 for(int i=1;i<=p;i++)
    {
        int x,k;
      f>>x>>k;
      if(k>=cost[x].size())
        g<<0<<"\n";
      else
      g<<cost[x][k-1]<<"  \n";
    }
    cout << "Hello world!" << endl;
    return 0;
}