Cod sursa(job #1049109)

Utilizator leontinLeontin leontin Data 6 decembrie 2013 21:44:45
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
#define max 250010
int v[20][max];
int str(int nod, int poz)
  {
      int maxi=17;
      while(poz>0)
        {
            if((1<<maxi)<=poz)
              {
                  nod=v[maxi][nod];
                  poz=poz-(1<<maxi);
              }
            maxi--;
        }
      return nod;
  }
int main()
{
    ifstream f("stramosi.in");
    ofstream g("stramosi.out");
    int n,m,i,j,p,q;
    f>>n>>m;
    for(i=1;i<=n;i++)
      f>>v[0][i];
    i=1;
    while((1<<i)<=n)
      {
          for(j=1;j<=n;j++)
             v[i][j]=v[i-1][v[i-1][j]];
          i++;
      }
    for(i=1;i<=m;i++)
      {
          f>>p>>q;
          g<<str(p,q)<<'\n';
      }

      for(i=1;i<=n;i++)
      {
          for(j=1;j<=n;j++)
          g<<v[i][j]<<" ";
          g<<endl;

      }


    f.close();
    g.close();
    return 0;
}