#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.