View Code of Problem 128

#include <stdio.h>
int n, m, a[20005], b[20005], c[20005],f=0;
void find(int city,int t)
{
	int i;
	if (city == n)
	{
		if (t < 0)
		f = 1;
		return;
	}
	if (!f){
		for (i = 0; i < m; i++)
		{
			if (a[i] == city)
			{
				city = b[i];
				t += c[i];
				find(city, t);
				t -= c[i];
				city = a[i];
			}
		}
	}
	return;
}
int main()
{
	int i;
	while(scanf("%d%d", &n, &m),n-1<=m&&n>=2)
	{
		for (i = 0; i < m; i++)
		{
			scanf("%d%d%d", &a[i], &b[i], &c[i]);
		}
		f = 0;
		find(1,0);
		if (f == 0)
			printf("NO\n");
		else
			printf("YES\n");
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 128