Cod sursa(job #1384400)

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

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

        if(vis[mat[nod][0]]==0)
        {

           cost[rad].push_back(mat[nod][0]);
           dfs(mat[nod][0]);
        }
     }
}
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++){

    if(vis[i]==0)
    {
        c=0;
        vis[i]=1;
        rad=i;
        dfs(i);
            if(mat[i].size()>0)
            {

              ndfin=mat[i][0];
          }

         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<<"\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;
}