SPOJ-Paradox

I can’t find error in my approach for SPOJ Paradox problem. Problem Link

My Solution:

	int status[105][2];

int dfs(int node,bool *visited,bool *conclusion)
{
    bool a = conclusion[node];
    bool b = (bool) status[node][1];

   bool c = !(a^b);

    if(visited[status[node][0]]==true)
    {
	if(conclusion[status[node][0]] == c)
	{
		return 1;
	}
	else return 0;
    }

    conclusion[status[node][0]]= c;
    visited[status[node][0]] = true;

    dfs(status[node][0],visited,conclusion);

}

int main()
{
    std::ios::sync_with_stdio(false);

    while(1)
    {
	int n;cin>>n;

	if(n==0)
		return 0;

	REP(i,n)
	{
		int temp; cin>>temp;
		string s; cin>>s;

		status[i][0]=temp-1;

		if(s=="true") status[i][1]=1;
		else status[i][1]=0;
	}

	bool visited[105]={false};
	bool conclusion[105]={false};

	conclusion[0]=true;
	visited[0]=true;
	bool res = dfs(0,conclusion,visited);

            if(res) cout<<"NOT PARADOX"<<endl;
	else cout<<"PARADOX"<<endl;
    }
}
//