Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

谁能帮我看看为什么WA,郁闷

Posted by luoguangyao at 2009-03-24 13:05:30 on Problem 2838
#include <iostream>
#include <queue>
#include <stdio.h>

using namespace std;

const int MAXX = 1002;
const int inf = 100000000;

struct point
{
	int number;
	point * pnext;
};

struct node
{
	int nnumber;
	point * nnext;
};

node map[MAXX];
bool mark[MAXX] = {0};

bool m[MAXX][MAXX];

void Init (node map[MAXX] , int n)
{
	int i;

	for (i = 1 ; i <= n; ++i)
	{
		map[i].nnumber = i;
		map[i].nnext = NULL;
	}
}

bool Search(int b , int e)
{
	int i;
	int j;

	queue<int> s;
	int k;

	point * p;

	p = map[b].nnext;
	mark[b] = 1;

	while (p)
	{
	///	cout << p -> number << " ";
		if(p->number == e)
		{
			return 1;
		}

		if(p->number != inf && !mark[p->number])
		{
			s.push(p -> number);
		}

		p = p -> pnext;
	}

	while(s.size())
	{
		k = s.front();
		s.pop();
		
		p = map[k].nnext;
		mark[k] = 1;

		while(p)
		{
	///		cout << p->number << " ";
			if(p->number == e)
			{
				return 1;
			}

			if(p->number != inf && !mark[p->number] )
			{
				s.push(p -> number);
			}

			p = p -> pnext;
		}
	}

	return 0;
}

void Insert(int b , int e)
{
	point *s = new point;
	
	s->number = e;
	s->pnext = map[b].nnext;
	map[b].nnext = s;
}

void Delet(int b , int e)
{
	point *p = map[b].nnext;
//	point *q = NULL;

	if (p->number == e)
	{
		p->number = inf;
	}
	else
	{
		while(p && p ->pnext)
		{
			if (p->pnext ->number == e)
			{
		//		q = p->pnext;
				p = p ->pnext->pnext;
			//	delete q;
				break;
			}
			else
			{
				p = p -> pnext;
			}
		}
	}
}

int main()
{
	int n;
	int connecte;
	int i;
	int j;

//	freopen("1.txt","r",stdin);

	

	while(cin >> n >> connecte)
	{

	memset(mark,0,sizeof(mark));
	memset(m,0,sizeof(m));

	char command;
	int b;
	int e;

	for (i = 1; i <= connecte ; ++i)
	{
		memset(mark,0,sizeof(mark));
		cin >> command;
		scanf("%d%d",&b,&e);

		if (command == 'Q')
		{
			if (Search(b , e))
			{
				printf("Y\n");
			}
			else if (b == e)
			{
				printf("Y\n");
			}
			else
			{
				printf("N\n");
			}
		}

		if (command == 'I')
		{
			if (m[b][e] == 0 && b != e)
			{
				Insert(b,e);
				Insert(e,b);
				m[b][e] = 1;
				m[e][b] = 1;
			}
		}

		if (command == 'D')
		{
			if (m[b][e] != 0 && b != e)
			{
				Delet(b,e);
				Delet(e,b);
				m[b][e] = 0;
				m[e][b] = 0;
			}
		}
	}
	}

	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator