10160 - Servicing Stations(TLM)
来源:互联网 发布:学java最好的学校 编辑:程序博客网 时间:2024/04/20 01:33
DFS,剪枝了一些,还是TLM了,先放着……
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;const int N = 35+1, M = N*N/2;int a[N][N];bool vis[N];int n, m, ans;void dfs(int buildNum, int cur, int nconn){if(buildNum >= ans || cur > n+1)return ;int vising[N];int vising_num = 0;bool ok = true;//all town is conneted//for(int i = 1; i <= n; i++)//if(!vis[i])//ok = false;//+++if(nconn != n)ok = false;if(ok){ans = buildNum;return ;}//bulid in cur and mark neighbouring townbool isConn = vis[cur];vis[cur] = true;for(int i = 1; i <= n; i++){if(a[cur][i] && !vis[i]){vis[i] = true;vising[vising_num++] = i;}}//prune: build but haven't affectif(isConn && vising_num == 0)return ;//+++int nNewBuild = (isConn ? 0 : 1) + vising_num;//builddfs(buildNum+1, cur+1, nconn + nNewBuild);//set backif(!isConn)vis[cur] = false;while(vising_num){vis[vising[--vising_num]] = false;}//not builddfs(buildNum, cur+1, nconn);}void solve(){ans = 0x3f3f3f3f;memset(vis, 0, sizeof(vis));dfs(0, 1, 0);}int main(){freopen("in.txt", "r", stdin);while(scanf("%d%d", &n, &m), n+m){int u, v;memset(a, 0, sizeof(a));for(int i = 0; i < m; i++){scanf("%d%d", &u, &v);a[u][v] = a[v][u] = 1;//conn[u]++, conn[v]++;}solve();printf("%d\n", ans);}return 0;}
0 0
- 10160 - Servicing Stations(TLM)
- UVa Problem 10160 Servicing Stations (服务站)
- uva 10160 Servicing Stations(DFS+剪枝)
- UVA - 10160 Servicing Stations(回溯+剪枝)
- UVa 10160 - Servicing Stations
- uva 10160 Servicing Stations
- UVA 10160 - Servicing Stations
- uva 10160 Servicing stations
- uva 10160Servicing Stations
- UVA 10160 Servicing Stations
- UVa 10160 - Servicing Stations
- [UVA 10160] Servicing Stations (DFS回溯 + 剪枝)
- Servicing Stations
- UVA 10160 Servicing Stations(深搜 + 剪枝)
- UVA - 10160 Servicing Stations 剪枝+回溯
- UVa 10160 Servicing stations解题报告
- (挑战编程_8_4)Servicing Stations
- uva10160 Servicing Stations
- JS光标定位到文本框字符串末尾
- leetcode-First Missing Positive
- C++ primer学习笔记_6_函数---函数定义、参数传递
- eclipse中简单使用libffmpeg.so
- android调试crash——反汇编
- 10160 - Servicing Stations(TLM)
- 美女图
- 如何使用 ulimit
- Magento 模块开发之模块重写
- 【SerialPort】线程间操作无效: 从不是创建控件“txtreceive”的线程访问它。
- 分享3个博客HTML5模板
- jQuery最佳实践
- JQuery 常用命令总结
- MFC数组类CArray的使用的操作详解[转]