UVA 140 Brandwidth 带宽 (dfs回溯)
看到next_permutation好像也能过╮(╯▽╰)╭
这题学习点:
1.建图做映射
2.通过定序枚举保证字典序最小
3.strtok,sscanf,strchr等函数又复习了一遍,尽管程序中没有实际用上
4.剪枝,或者回溯
#include<bits/stdc++.h>
using namespace std; int G[][],deg[];
bool vG[][];//判读连通
int pos[];
bool vis[];
int k;
int best[];
int cnt;
int ID[];
char rev_ID[]; void dfs(int d,int width)
{
if(d == cnt){
if(width < k){
k = width;
memcpy(best,pos,sizeof(pos));
}
return;
}
for(int i = ;i < cnt; i++) if(!vis[i]){//把i放在d位置
pos[d] = i; //prune 计算i和之前确定位置的结点的最大距离
int m = ;
for(int j = d-; j >=; j--) if(vG[i][pos[j]]) {
m = max(m,d-j);
if(m >= k) continue;//这题数据水了,这里写成return还是能过
} //prune2 计算u和未确定位置的相邻点的个数,适用于简单图
int ct = ;
for(int j = ; j < deg[i]; j++) if(!vis[G[i][j]]) ct++;
if(ct >= k) continue; vis[i] = ;
dfs(d+,max(width,m));
vis[i] = ;
}
} int main()
{
// freopen("in.txt","r",stdin);
char buf[];
const int INF = 0x3fffffff;
while(fgets(buf,,stdin) && *buf!='#'){
cnt = ;
memset(vG,,sizeof(vG));
memset(deg,,sizeof(deg));
memset(ID,-,sizeof(ID));
memset(vis,,sizeof(vis));
bool ap[] ;
memset(ap,,sizeof(ap));
for(char *cur = buf; *cur ; cur++) {
int u = *cur - 'A';
if(<= u && u < ) ap[u] = ;
} for(int i = ; i < ; i++){
if(ap[i]){
rev_ID[cnt] = i+'A';
ID[i] = cnt++;
}
} for(char *cur = buf; *cur ; cur++) {
int u = ID[*cur - 'A'];
for(cur+= ; *cur != '\n' && *cur != ';' ; cur++) {
int v = ID[*cur - 'A'];
vG[u][v] = vG[v][u] = ;
}
} for(int i = ; i < cnt; i++)
for(int j = ; j < cnt; j++){
if(vG[i][j]) G[i][deg[i]++] = j;
}
k = INF;
dfs(,);
for(int i = ; i < cnt; i++){
printf("%c ",rev_ID[best[i]]);
}
printf("-> %d\n",k);
}
return ;
}
UVA 140 Brandwidth 带宽 (dfs回溯)的更多相关文章
- UVA 140 Bandwidth (dfs 剪枝 映射)
题意: 给定一个n个结点的图G和一个结点的排列, 定义结点i的带宽b(i)为i和相邻结点在排列中的最远距离, 所有b(i)的最大值就是这个图的带宽, 给定G, 求让带宽最小的结点排列. 给定的图 n ...
- UVa 129 Krypton Factor (DFS && 回溯)
题意 : 如果一个字符串包含两个相邻的重复子串,则称它是“容易的串”,其他串称为“困难的 串”.例如,BB.ABCDACABCAB.ABCDABCD都是容易的串,而D.DC.ABDAB. CBABCB ...
- uva 193 Graph Coloring(图染色 dfs回溯)
Description You are to write a program that tries to find an optimal coloring for a given graph. Col ...
- poj1270Following Orders(拓扑排序+dfs回溯)
题目链接: 啊哈哈.点我点我 题意是: 第一列给出全部的字母数,第二列给出一些先后顺序. 然后按字典序最小的方式输出全部的可能性.. . 思路: 整体来说是拓扑排序.可是又非常多细节要考虑.首先要按字 ...
- 素数环(dfs+回溯)
题目描述: 输入正整数n,把整数1,2...n组成一个环,使得相邻两个数和为素数.输出时从整数1开始逆时针排列并且不能重复: 例样输入: 6 例样输出: 1 4 3 2 5 6 1 6 5 2 3 4 ...
- NOJ 1074 Hey Judge(DFS回溯)
Problem 1074: Hey Judge Time Limits: 1000 MS Memory Limits: 65536 KB 64-bit interger IO format: ...
- HDU 1016 Prime Ring Problem(经典DFS+回溯)
Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- HDU 2181 哈密顿绕行世界问题(经典DFS+回溯)
哈密顿绕行世界问题 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- HDU1016 Prime Ring Problem(DFS回溯)
Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
随机推荐
- ZOJ 3512 Financial Fraud (左偏树)
题意:给定一个序列,求另一个不递减序列,使得Abs(bi - ai) 和最小. 析:首先是在每个相同的区间中,中位数是最优的,然后由于要合并,和维护中位数,所以我们选用左偏树来维护,当然也可以用划分树 ...
- lung 分割论文
<4D Lung Tumor Segmentation via Shape Prior and Motion Cues > Abstract— Lung tumor segmentatio ...
- [51nod] 1091 线段的重叠 贪心
X轴上有N条线段,每条线段包括1个起点和终点.线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]. 给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长 ...
- 51nod 1562 玻璃切割
1562 玻璃切割 http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1562 题目来源: CodeForces 基准时间 ...
- 剑指Offer的学习笔记(C#篇)-- 二进制中1的个数
题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 一 . 解题思路 新颖的解法,使得该题目运用到了二进制的位运算符.先了解一下位运算符! 此题便很好的发挥了位运算符& ...
- python 扩展注册功能装饰器举例
db_path='db.txt'def get_uname(): while True: uname=input('请输入用户名:').strip() if uname.isalpha(): with ...
- 3分钟简单了解 prototype 和 __proto__
关于prototype 1. 所有的函数都会有一个prototype属性,属性值是一个普通对象: 2. 当我们去new一个构造函数的实例时,构造函数的原型对象(prototype)会被赋值给它实例的[ ...
- Mybatis Plugin(拦截器)的开发
1.Plugin MyBatis 允许使用插件来拦截的方法调用包括: • Executor (update, query, flushStatements, commit, rollback, g ...
- 关于FutureTask的探索
之前关于Java线程的时候,都是通过实现Runnable接口或者是实现Callable接口,前者交给Thread去run,后者submit到一个ExecutorService去执行. 然后知道了还有个 ...
- STM32之VCP1/VCAP2引脚的处理
需要根据仔细根据手册来决定这两个引脚是直接接地还是电容下拉到地 转载:STM32的Vcap的问题及解决---原来经验也害人http://bbs.eeworld.com.cn/thread-499497 ...