View Code of Problem 128

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct arry{
	int city;
	int value;
	struct arry *next;
}City;

void check(int citynum,City *juzhen[],int loadvalue[],int loadnum)
{
	int a,b,c,i;
	City *p;
	for(a=0;a<citynum;a++)
	{
		juzhen[a]=(City*)malloc(sizeof(City));
		juzhen[a]->value=0;
		juzhen[a]->city=0;
		juzhen[a]->next=NULL;	
	}
	for(i=0;i<citynum;i++)
	{
		p=juzhen[i];
		for(b=0;b<loadnum;b++)
		{
			c=b*3;
			if(loadvalue[c]==b+1)
			{
				p->city=loadvalue[c+1];
				p->value=loadvalue[c+2];
				p->next=(City*)malloc(sizeof(City));
				p=p->next;
				p->next=NULL;
			}
		}
	}
}

int deep(City *juzhen[],int citynum,int loadnum,int i,int count,int flag,int back)
{
	qq:if(flag==1&&i==0&&juzhen[i]->next!=NULL)
		juzhen[i]=juzhen[i]->next,count=0,flag=0;
	count=count+juzhen[i]->value;
	i=juzhen[i]->city-1;
	if(count<0&&i==citynum-1)
	{
		back=1;
		goto pp;
	}
	if(i!=0&&juzhen[i]->city==0&&back!=1)
		flag=1,i=0;
	if(i==0&&juzhen[i]->next==NULL)
	goto pp;
	goto qq;
	pp:return back;
}

int main()
{
	int citynum,loadnum,i=0,a=0,p=0,q=0,flag=0,count=0;
	int loadvalue[20001];
	City *juzhen[1005];
	printf("请输入城市的数量以及各个城市之间的通路的数量\n");
	scanf("%d %d",&citynum,&loadnum);
	while(i<loadnum)
	{
		for(int m=0;m<3;m++)
		{
			scanf("%d",&loadvalue[a++]);
		}
		i++;
	} 
	check(citynum,juzhen,loadvalue,loadnum);
	q=deep(juzhen,citynum,loadnum,p,count,flag,q);
	if(q==1)
	printf("YES\n");
	else
	printf("NO\n");
	return 0;
} 

Double click to view unformatted code.


Back to problem 128