View Code of Problem 128

#include<stdio.h>
#include<string.h>

int min(int a, int b) {
	if (a > b)
		return b;
	else
		return a;
}
int max(int a, int b) {
	if (a > b)
		return a;
	else
		return b;
}
int n, m=0, q,a, b, t;
char ss[1000][300];
int ccc[1000][299];
int sum = 0;
void  dfs(int nn) {
	if (nn == n - 1 && sum < 0) {
		printf("YES\n");
		return;
	}
	if (nn >= n) {
	sum -=ccc[nn][q];
	return ;
    }
		sum += ccc[nn][q];
		nn = ss[nn][q]-48;
		dfs(nn);
		q++;
		
	
}

int main() {
	for (int i = 0; i < 1000; i++) {
		ss[i][0] = '\0';
	}
	
	while (scanf("%d %d", &n, &m) != EOF) {
		q = 0;
		while (m > 0) {
			if (m != 1) {
				scanf("%d%d\n", &a, &b);
				scanf("%d", &ccc[min(a, b) - 1][strlen(ss[min(a, b)])]);
			}
			else {
				scanf("%d%d", &a, &b );
				scanf("%d", &ccc[min(a, b) - 1][strlen(ss[min(a, b)])]);
			}
			ss[min(a, b)-1][strlen(ss[min(a, b)-1]) + 1] = '\0';
			ss[min(a, b)-1][strlen(ss[min(a, b)-1])] = (char)(max(b, a) + 47);
			m--;
		}
		dfs(0);

	}
	return 0;
}

Double click to view unformatted code.


Back to problem 128