UVA 140 Brandwidth 带宽 (dfs回溯)
2024-09-29 21:44:52
看到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 ;
}
最新文章
- 学习SpringMVC——拦截器
- C 语言学习 第12次作业总结
- MongoDB 知识要点一览
- 【LEETCODE OJ】Clone Graph
- 在Cubieboard上关闭irqbalance服务避免内存泄漏
- python基础教程(一)
- 模型的元数据Meta -- Django从入门到精通系列教程
- alpha冲刺第四天
- Spring MVC(一)五大核心组件和配置
- 死磕 java集合之TreeMap源码分析(四)-内含彩蛋
- php发送邮箱
- NLog类库使用探索——编程配置
- windows下Anaconda的安装与配置正解
- Network - SSL/TLS的基本概念
- ESXi安装时遇到不识别的硬件的处理
- 【抓包】【Charles】
- font-face 跨域解决
- 7.1 安装软件包的三种方法 7.2 rpm包介绍 7.3 rpm工具用法 7.4 yum工具用法 7.5 yum搭建本地仓库
- more 可翻页查看(一页一页翻动)
- quartusII13.0使用教程
热门文章
- VS~通过IIS网站启用";域名";调试
- Golang : pflag 包简介
- ue4 杂记
- $.extend(),与$.fn.extend() 讲解(一)
- python进阶02 特殊方法与特殊属性
- 题解 poj1845 Sumdiv (数论) (分治)
- Vue --6 router进阶、单页面应用(SPA)带来的问题
- jQuery解决ajax请求的跨域问题
- DotNetAnywhere
- 076 Minimum Window Substring 最小窗口子字符串