| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
哪错了,帮下忙,谢谢!!!!#include<stdio.h>
#include<string.h>
#include<malloc.h>
#include<stdlib.h>
int circles[101];
int Aj[10001],Bj[10001],Cj[10001];
int mark[150][150]={0};
struct room
{
int Aj;
int Bj;
int flag;
struct room *next;
};
int Function(int N,int M,int L,int K,int Q)
{
struct room *head,*p,*r;
int step=0,i,j,k;
r=p=head=(struct room *)malloc(sizeof(struct room));
head->Aj=L;head->Bj=K;
head->flag=1;
head->next=NULL;
if(head->Aj==Q||head->Bj==Q)return(step);
while(1)
{
if(head->flag==1)step++;
mark[head->Aj][head->Bj]=1;
mark[head->Bj][head->Aj]=1;
for(i=0;i<M;i++)
{
if(head->Aj==Aj[i]&&Cj[i]==circles[head->Bj]&&head->Bj!=Bj[i]&&mark[Bj[i]][head->Bj]!=1&&mark[head->Bj][Bj[i]]!=1)
{
p=(struct room *)malloc(sizeof(struct room));
p->Aj=Bj[i];p->Bj=head->Bj;
p->flag=0;
if(p->Aj==Q||p->Bj==Q)return(step);
mark[p->Aj][p->Bj]=1;
mark[p->Bj][p->Aj]=1;
p->next=NULL;
r->next=p;
r=p;
}
if(head->Bj==Aj[i]&&Cj[i]==circles[head->Aj]&&head->Aj!=Bj[i]&&mark[Bj[i]][head->Aj]!=1&&mark[head->Aj][Bj[i]]!=1)
{
p=(struct room *)malloc(sizeof(struct room));
p->Bj=Bj[i];p->Aj=head->Aj;
p->flag=0;
if(p->Aj==Q||p->Bj==Q)return(step);
mark[p->Aj][p->Bj]=1;mark[p->Bj][p->Aj]=1;
p->next=NULL;
r->next=p;
r=p;
}
}
if(head->flag==1)p->flag=1;
head=head->next;
if(head==NULL)return(-1);
}
}
int main()
{
int N,L,K,Q,i,M,result;
scanf("%d %d %d %d",&N,&L,&K,&Q);
for(i=1;i<=N;i++)
{
scanf("%d",&circles[i]);
}
scanf("%d",&M);
for(i=0;i<M;i++)
{
scanf("%d %d %d",&Aj[i],&Bj[i],&Cj[i]);
}
result=Function(N,M,L,K,Q);
if(result==-1)printf("NO\n");
else printf("YES\n%d\n",result);
system("pause");
return(0);
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator