Pagini recente » Cod sursa (job #1188614) | Cod sursa (job #1551449) | Cod sursa (job #2437941) | Cod sursa (job #605866) | Cod sursa (job #1384428)
#include <iostream>
#include <fstream>
#include<vector>
#include<stack>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
vector<unsigned short>mat[150000];
vector<unsigned short>cost[150000];
char vis[150000]={};
int ndfin;
int c=0;
int rad;
void dfs(int nod)
{
ndfin=nod;
vis[nod]=1;
if(mat[nod].size()>0&&c<=1000)
{
if(vis[mat[nod][0]]==0)
{
c++;
cost[rad].push_back(mat[nod][0]);
dfs(mat[nod][0]);
}
}
}
void dfit(int nod)
{
std::stack<int> st;
st.push(nod);
int nd;
while(st.empty()!=false)
{
nd=st.top();
st.pop();
vis[nd]=1;
if(mat[nd].size()>0)
{
if(vis[mat[nd][0]]==0)
{
cost[rad].push_back(mat[nod][0]);
st.push(mat[nd][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)
{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]);
}
}
}
}
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;
}