Routing

Time limit: 1.0 second
Memory limit: 64 MB
There is a TCP/IP net of several computers. It means that:
  1. Each computer has one or more net interfaces.
  2. Each interface is identified by its IP-address and a subnet mask —
    these are two four-byte numbers with a point after each byte. A subnet
    mask has a binary representation as follows: there are k 1-bits, then — m 0-bits, k+m=8*4=32 (e.g., 212.220.35.77 — is an IP-address and 255.255.255.128 — is a subnet mask).
  3. Two computers belong to the same subnet, if and only if (IP1 AND NetMask1) = (IP2 AND NetMask2), where IPi and NetMaski — are an IP-address and subnet mask of i-th computer, AND — is bitwise.
  4. A packet is transmitted between two computers of one subnet directly.
  5. If two computers belong to different subnets, a packet is to be
    transmitted via some other computers. The packet can pass from one
    subnet to another only on computer that has both subnets interfaces.
Your task is to find the shortest way of a packet between two given computers.

Input

The first line contains a number N — an amount of computers in the net, then go N sections, describing interfaces of each computer. There is a number K in the first line of a section — that is an amount of interfaces of the computer, then go K
lines — descriptions of the interfaces, i.e. its IP-address and a
subnet mask. The last line of an input contains two integers — the
numbers of the computers that you are to find a way between them.
You may assume that 2 ≤ N ≤ 90 and K ≤ 5.

Output

The
word “Yes” if the route exists, then in the next line the computer
numbers passed by the packet, separated with a space. The word “No”
otherwise.

Sample

input output
6
2
10.0.0.1 255.0.0.0
192.168.0.1 255.255.255.0
1
10.0.0.2 255.0.0.0
3
192.168.0.2 255.255.255.0
212.220.31.1 255.255.255.0
212.220.35.1 255.255.255.0
1
212.220.31.2 255.255.255.0
2
212.220.35.2 255.255.255.0
195.38.54.65 255.255.255.224
1
195.38.54.94 255.255.255.224
1 6
Yes
1 3 5 6
Problem Author: Evgeny Kobzev
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <string>
#include <stack>
#include <queue>
#include <vector>
#define inf 0x3f3f3f3f
#define met(a,b) memset(a,b,sizeof a)
typedef long long ll;
using namespace std;
const int N = ;
const int M = ;
long long yu[N][];
int map[N][N];
int len[N];
int a[N],n;
bool check(int x,int y) {
for(int i=; i<a[x]; i++)
for(int k=; k<a[y]; k++)
if( yu[x][i] == yu[y][k] )
return true;
return false;
}
int pre[N];
void output(int t) {
if( pre[t] == - ) return;
output(pre[t]);
printf(" %d",t);
}
void Dijkstra(int s,int t) {
bool used[N];
int dis[N];
memset(used,false,sizeof(used));
fill(dis,dis+N,INT_MAX);
memset(pre,-,sizeof(pre));
dis[s] = ;
used[s] = true;
int now = s;
for(int i=; i<n; i++) {
for(int k=; k<=n; k++)
if( map[now][k] && dis[k] > dis[now] + ) {
dis[k] = dis[now] + ;
pre[k] = now;
}
int mmin = INT_MAX;
for(int k=; k<=n; k++)
if( !used[k] && dis[k] < mmin )
mmin = dis[now = k];
used[now] = ;
}
if( dis[t] == INT_MAX ) {
printf("No\n");
return ;
}
printf("Yes\n");
printf("%d",s);
output(t);
printf("\n");
}
int main() {
int t1[],t2[],s,t;
scanf("%d",&n);
memset(len,,sizeof(len));
memset(yu,,sizeof(yu));
memset(map,,sizeof(map));
for(int i=; i<=n; i++) {
scanf("%d",&a[i]);
for(int k=; k<a[i]; k++) {
scanf("%d.%d.%d.%d",&t1[],&t1[],&t1[],&t1[]);
scanf("%d.%d.%d.%d",&t2[],&t2[],&t2[],&t2[]);
for(int p=; p<; p++) {
yu[i][k] *= ;
yu[i][k] += ( t1[p] & t2[p] );
}
}
for(int k=; k<i; k++)
if( check(k,i) )
map[i][k] = map[k][i] = ;
}
scanf("%d %d",&s,&t);
Dijkstra(s,t); return ;
}

URAL 1072 Routing(最短路)的更多相关文章

  1. ural 1072. Routing

    1072. Routing Time limit: 1.0 secondMemory limit: 64 MB There is a TCP/IP net of several computers. ...

  2. hdu 1548 A strange lift(迪杰斯特拉,邻接表)

    A strange lift Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  3. Ural 1741 Communication Fiend(隐式图+虚拟节点最短路)

    1741. Communication Fiend Time limit: 1.0 second Memory limit: 64 MB Kolya has returned from a summe ...

  4. 1072. Gas Station (30)【最短路dijkstra】——PAT (Advanced Level) Practise

    题目信息 1072. Gas Station (30) 时间限制200 ms 内存限制65536 kB 代码长度限制16000 B A gas station has to be built at s ...

  5. DP/最短路 URAL 1741 Communication Fiend

    题目传送门 /* 题意:程序从1到n版本升级,正版+正版->正版,正版+盗版->盗版,盗版+盗版->盗版 正版+破解版->正版,盗版+破解版->盗版 DP:每种情况考虑一 ...

  6. URAL 1002 Phone Numbers(KMP+最短路orDP)

    In the present world you frequently meet a lot of call numbers and they are going to be longer and l ...

  7. URAL 1085 Meeting(最短路)

    Meeting Time limit: 2.0 secondMemory limit: 64 MB K friends has decided to meet in order to celebrat ...

  8. URAL 1056 Computer Net(最短路)

    Computer Net Time limit: 2.0 secondMemory limit: 64 MB Background Computer net is created by consecu ...

  9. URAL 2034 Caravans(变态最短路)

    Caravans Time limit: 1.0 secondMemory limit: 64 MB Student Ilya often skips his classes at the unive ...

随机推荐

  1. 戴文的Linux内核专题:02源代码

    转自Linux中国 在下载并解压内核源代码后,用户可以看到许多文件夹和文件.尝试去找一个特定的文件或许是一个挑战.谢天谢地,源代码以一个特定的方式组织的.这使开发者能够轻松找到任何文件或者内核的一部分 ...

  2. 全国行政区划代码(json对象版)

    var area = {"110000":"北京市","110100":"北京市","110101" ...

  3. arm裸机驱动错误总结

    错误001:

  4. Add project to working sets

    最近换了个电脑,重新搭建了开发环境,但是在新建项目的过程中发现有Add project to working sets这一个选项,一开始也不明白是什么意思,百度了一下,不少网友说是把项目存到物理空间, ...

  5. PHP图像处理之画图

    PHP图像处理    画图        验证码,统计图 安装GD库-----LAMP            安装后在D:\APMServ5.2.6\PHP\ext文件中有php_gd2.dll文件  ...

  6. POJ 3278 经典BFS

    进一步了解了bfs; 题意:给你n,然后用+,-,*三种运算使n变成k; 漏洞:在算出新的数字之后,一定要判边界,否则RE,而且在每一步后面都得加判断是否等于K,如果是即刻退出,否则WA,判这个的时候 ...

  7. Redis - list类型操作

    list类型操作 设置操作:lpush:    lpush key value            在list左侧插入value rpush:    rpush key value          ...

  8. 学习笔记:只有一套app设计稿(5s尺寸)切出4和4s尺寸以及安卓系统主流尺寸的图

    如何在只有一套app设计稿(5s尺寸)切出4和4s尺寸以及安卓系统主流尺寸的图 转自:http://www.zhihu.com/question/23255417   版权归原作者所有 目前ios手机 ...

  9. Android绘图之渐隐动画

    实现了一个有趣的小东西:使用自定义View绘图,一边画线,画出的线条渐渐变淡,直到消失.效果如下图所示: 用属性动画或者渐变填充(Shader)可以做到一笔一笔的变化,但要想一笔渐变(手指不抬起边画边 ...

  10. Unity3D ShaderLab 使用BlinnPhong高光类型

    Unity3D shaderLab 使用BlinnPhong高光类型 上一篇我们实现了自定义高光类型,这一篇,我们说Blinn高光,它是另一种计算和估算高光更高效的方式,它是通过视线防线和光线方向,所 ...