#include #include #define MAX 1000000000 int a[10001],v[10002],h[100001][3],b[10001],c[10001],d[10001]; int n,m,o,x,y,i,j,k,l; int cmp(const void *a, const void *b) { return *(int *)a - *(int *)b; } void Swap(int i,int j) { int k; k = a[i]; a[i] = a[j]; a[j] = k; d[a[i]] = i; d[a[j]] = j; } void Update(int i) { int j; i = d[i]; while (i > 1) { j = i/2; if (b[a[j]] <= b[a[i]]) break; Swap(i, j); i = j; } } int main() { while(1) { scanf("%d %d %d %d\n", &n, &m, &x, &y); if (n == 0) break; for (i=1; i<=m; i++) { scanf("%d %d %d\n", &j, &k, &l); h[2*i-1][0] = j; h[2*i-1][1] = k; h[2*i-1][2] = l; h[2*i][0] = k; h[2*i][1] = j; h[2*i][2] = l; } m*=2; qsort(&h[1], m, sizeof(int) * 3, cmp); j = 1; for (i=1; i<=n; i++) { v[i] = j; while (j<=m && h[j][0] <= i) j++; } v[n+1] = j; o = n; /*for (i=1; i<=n; i++) { printf("%d: ", i); for (j=v[i]; jo) break; if (kb[a[k+1]]) k++; if (b[a[j]]<=b[a[k]]) break; Swap(j, k); j = k; } for (k=v[i]; k