Code: Select all
Removed.
i am pasting my code here ;please its a sincere req to anyone of u to pls kindly explain the reasons of tle and rte as my debuging passes them;its also a rqst to go through my code and reply soon
using namespace std;
#include<iostream>
#include<cstdio>
#include<vector>
#include<queue>
#define FOR(i,N)for(i=0;i<(N);i++)
vector<int>v[2500];
vector<int>vec(2500);
bool vis[2500];
int n,m,i,c,k,test,ca,sum,day,emp,endcount,maximum,l,flag;
void init()
{
FOR(i,n)
{
vis=false;
vec[i+1]=0;
}
sum=0;
day=1;
emp=0;
endcount=0;
flag=0;
}
void cal(int ca)
{
std::queue<int>q;
init();
if(v[ca][0]==0)
return;
vis[ca]=true;
++endcount;
for(i=1;i<v[ca].size();i++)
{
if(v[ca][1]==ca)
return;
q.push(v[ca]);
vis[v[ca]]=true;
++emp;
++endcount;
flag=1;
}
vec[day]=emp;
emp=0;
while(v[ca][0]--)
{
m=q.front();
for(i=1;i<v[m].size();i++)
{
if(!vis[v[m]])
{
q.push(v[m]);
vis[v[m]]=true;
++endcount;
++emp;
flag=1;
}
}
q.pop();
}
vec[++day]=emp;
if(endcount==n)
return;
while(!q.empty())
{
emp=0;
m=q.front();
while(v[m][0]--)
{
for(i=1;i<v[m].size();i++)
{
if(!vis[v[m]])
{
q.push(v[m]);
vis[v[m]]=true;
++endcount;
++emp;
flag=1;
}
}
}
q.pop();
vec[++day]=emp;
if(endcount==n)
return;
}
if(q.empty()) return;
}
int main()
{
//int n,i,c,k,test,ca;
scanf("%d",&n);
//std::vector<int>v[n];
for(i=0;i<n;i++)
{
scanf("%d",&c);
v.push_back(c);
while(c--)
{
scanf("%d",&k);
v[i].push_back(k);
}
}
/* for(i=0;i<n;i++)
{
for(int j=0;j<v[i].size();j++)
printf("%d ",v[i][j]);
}*/
scanf("%d",&test);
while(test--)
{
scanf("%d",&ca);
cal(ca);
if(flag==0)
printf("0\n");
else
{
maximum=0;
for(i=1;i<n;i++)
{
if(vec[i]>maximum)
{
maximum=vec[i];
l=i;
}
}
printf("%d %d\n",maximum,l);
}
}
return 0;
}