UVa 193 - Graph Coloring(graph theory, brute force, backtracking, NP-complete, maximum independent set.)

最近为感情问题纠结了很久,好久没AC了,早上起来回味了一下AC的感觉。哈哈

/* File: vc193.cpp Author: ACboy Date: 2010-3-29 Result: AC Description: UVa 193 - Graph Coloring */ #include <iostream> using namespace std; int data[110][110]; int vis[110]; int ans; int m; int n; int k; int res[110]; int temp[110]; int c; int ifCan(int p) { int ok = 1; for (int i = 1; i <= n; i++) { if (vis[i] && data[p][i]) { ok = 0; break; } } return ok; } void dfs(int pos) { if (pos > ans) { ans = pos; c = pos; for (int j = 0; j < pos; j++) { res[j] = temp[j]; } } for (int i = 1; i <= n; i++) { if (pos == 0 || (ifCan(i) && i > temp[pos - 1])) { vis[i] = 1; temp[pos] = i; dfs(pos + 1); vis[i] = 0; } } } int main() { #ifndef ONLINE_JUDGE freopen("193.txt", "r", stdin); #endif cin >> m; while (m--) { cin >> n >> k; int i, j; memset(data, 0, sizeof(data)); for (i = 0; i < k; i++) { int a, b; cin >> a >> b; data[a][b] = 1; data[b][a] = 1; } memset(vis, 0, sizeof(vis)); ans = -1; dfs(0); cout << ans << endl; for (j = 0; j < c - 1; j++) { cout << res[j] << " "; } cout << res[c - 1] << endl; } return 0; }

你可能感兴趣的:(c,File,Graph,2010)