题意:

  给出一个n个节点的图G,和一个节点的排列,定义节点i的带宽为i和相邻节点在排列中的最远距离,而所有带宽的最大值就是图的带宽,求让图的带宽最小的排列。

分析:

  列出所有可能的排列,记录当前找到的最小带宽。如果有某两个节点的距离大于或等于最小带宽,这种排列减掉。

代码:

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
int use[27]//记录那个字母被使用;
int node[9],save[9];
int map[27][27];
int cnt,maxn;
char a[500];
int main()
{
int i,j,k;
while(gets(a))
{
if(a[0]=='#')
break;
memset(use,0,sizeof(use));
memset(map,0,sizeof(map));
int len=strlen(a);
maxn=10;
cnt=0;
int flag=0;
for(i=0,flag=0;i<len;i++)
{
if(a[i]>='A'&&a[i]<='Z')
use[a[i]-'A']=1;
int c;
if(a[i]==':')
{
c=a[i-1]-'A';
flag=1;
}
else if(a[i]>='A'&&a[i]<='Z'&&flag)
{
map[c][a[i]-'A']=map[a[i]-'A'][c]=1;
}
else if(a[i]==';')
flag=0;
}
for(i=0;i<26;i++)
if(use[i]==1)
node[cnt++]=i;
do
{
int num=0;
for(i=0;i<cnt;i++)
{
for(j=i+1;j<cnt;j++)
{
if(map[node[i]][node[j]])
if(abs(j-i)>num)
num=abs(j-i);
}
if(num>maxn)
break;
}
if(maxn>num)
{
maxn=num;
memcpy(save,node,sizeof(node));
}
}
while(next_permutation(node,node+cnt));
for(i = 0; i < cnt; i++)
printf("%c ", save[i] + 'A');
printf("-> %d\n", maxn);
}
}

UVA 140 Bandwidth的更多相关文章

  1. uva 140 bandwidth (好题) ——yhx

     Bandwidth  Given a graph (V,E) where V is a set of nodes and E is a set of arcs in VxV, and an orde ...

  2. UVa 140 Bandwidth【枚举排列】

    题意:给出n个节点的图,和一个节点的排列,定义节点i的带宽b[i]为i和其相邻节点在排列中的最远的距离,所有的b[i]的最大值为这个图的带宽,给一个图,求出带宽最小的节点排列 看的紫书,紫书上说得很详 ...

  3. UVA - 140 Bandwidth(带宽)(全排列)

    题意:给定图,求是带宽最小的结点排列. 分析:结点数最多为8,全排列即可.顶点范围是A~Z. #pragma comment(linker, "/STACK:102400000, 10240 ...

  4. UVA 140 Bandwidth (dfs 剪枝 映射)

    题意: 给定一个n个结点的图G和一个结点的排列, 定义结点i的带宽b(i)为i和相邻结点在排列中的最远距离, 所有b(i)的最大值就是这个图的带宽, 给定G, 求让带宽最小的结点排列. 给定的图 n ...

  5. UVa OJ 140 - Bandwidth (带宽)

    Time limit: 3.000 seconds限时3.000秒 Problem问题 Given a graph (V,E) where V is a set of nodes and E is a ...

  6. UVa 140 (枚举排列) Bandwidth

    题意较复杂,请参见原题=_=|| 没什么好说的,直接枚举每个排列就好了,然后记录最小带宽,以及对应的最佳排列. STL里的next_permutation函数真是好用. 比较蛋疼的就是题目的输入了.. ...

  7. 【例题 7-6 UVA - 140】Bandwidth

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 暴力做就好. O(8!*26^2) [代码] /* 1.Shoud it use long long ? 2.Have you ev ...

  8. UVA 140 (13.07.29)

     Bandwidth  Given a graph (V,E) where V is a set of nodes and E is a set of arcsin VxV, and anorderi ...

  9. uva 104 Bandwidth

    题意: 给一个图, 将其节点以任一序列排列. 1)计算每个节点距离相邻节点的最大距离 dis[i] 2)计算出当前序列中, 所有节点的dis[i], 并求出最大的dis[i] : max_dis 求最 ...

随机推荐

  1. ActiveMQ发布订阅模式(转)

    ActiveMQ的另一种模式就SUB/HUB即发布订阅模式,是SUB/hub就是一拖N的USB分线器的意思.意思就是一个来源分到N个出口.还是上节的例子,当一个订单产生后,后台N个系统需要联动,但有一 ...

  2. Spark RDD设计学习笔记

    本文档是学习RDD经典论文<Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster ...

  3. 被sjy带刷题#1

        笔记[问题描述]给定一个长度为m的序列a,下标编号为1~m.序列的每个元素都是1~n的整数.定义序列的代价为 你现在可以选择两个数x和y,并将序列a中所有的x改成y.x可以与y相等.请求出序列 ...

  4. (原)ubuntu16中安装moses

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5653186.html 在ubuntu14中,可以使用下面的语句安装moses: luarocks in ...

  5. sqlCacheDependency 更新缓存Cache

    第一步 修改web,config <!--定义数据库连接--> <connectionStrings>  <add name="NorthwindConnect ...

  6. EditText判断用户输入完成,然后进行操作解决方案

    private Timer timer = new Timer(); private final long DELAY = 1000; // in ms EditText editTextStop = ...

  7. python selenium初入

    ubuntu python3.4 1.安装selenium, pip 安装 pip install selenium 2.selenium版本2.53.x 试过从官网下载的selenium3,但是fi ...

  8. Advanced Fruits(HDU 1503 LCS变形)

    Advanced Fruits Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  9. Android进阶练习一

    1.有序广播: https://github.com/wuzhuojun/BroadcastExample 说明: 在manifest.xml设置的广播是静态注册,只要软件安装在手机上广播就能够生效. ...

  10. "windows 正在启动"

    xp 在cmd下使用了control userpasswords2 设定开机不需要密码之后,开机停留在“window正在启动”,无法进入.估计是设置的时候密码输入错误了( 并不会提示你错误:() 在停 ...