// UVa 11742 - Social Constraints
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
while (n || m) {
int a[20], b[20], c[20], p[8];
for (int k = 0; k < m; k++)
cin >> a[k] >> b[k] >> c[k];
for (int i = 0; i < n; i++)
p[i] = i;
signed long long int sol = 0;
do {
bool valid = true;
for (int k = 0; k < m; k++) {
int i = 0;
for (; i < n; i++)
if (p[i] == a[k])
break;
int j = 0;
for (; j < n; j++)
if (p[j] == b[k])
break;
if (c[k] > 0 && abs(i - j) > c[k]) {
valid = false;
break;
}
if (c[k] < 0 && abs(i - j) < -c[k]) {
valid = false;
break;
}
}
if (valid)
sol++;
} while (next_permutation(p, p + n));
cout << sol << endl;
cin >> n >> m;
}
return 0;
}
Monday, March 28, 2016
UVa 11742 - Social Constraints
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment