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. IE7的overflow失效的解决方法

    IE7的position:relative bug今天遇到了一个相对定位(position:relaitve)引起的IE7中overflow:hidden失效的bug,特此记录!解决方法很简单,给父层 ...

  2. Problem A 栈

    Description   You are given a string consisting of parentheses () and []. A string of this type is s ...

  3. C#基础之类、组件和命名空间(二)

    一.实例化对象 Student s; 首先是在栈中开辟一块空间叫s,s里面的内容是空: s = new Student(); 在堆实例化Student对象,将对象的引用地址保存到栈s里.因此,s指向S ...

  4. IOS四种保存数据的方式

    在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题.将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好.下面介绍一下数据保存的方式: 1.NSKeyed ...

  5. 利用NTFS交换数据流隐藏文件

    利用NTFS交换数据流隐藏文件 发表于 2012 年 12 月 15 日 由 晴刃 这篇文章介绍一下Windows的NTFS文件系统的ADS(alternate data streams,交换数据流) ...

  6. 5分钟学习maven(根据英文文档整理)

    英文原地址:http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html 一.前提 需要懂得如何在计算机上安装软件 ...

  7. 一个简单的Dump转文本工具—Dump2Text

    每次电脑重装都得烦心,要把庞大的IDE重新配置一次,正准备安装Visual Stdio 2010,上网找镜像的时候发现,Visual Stdio 2013推出了Community版,不仅没有lite掉 ...

  8. IOS聊天对话界面

    大家好,百忙之中,抽出点空,写个微博,话说好久没写. 最近项目中有碰到写类似微信聊天界面上的效果,特整理了一下,写了一个小的Demo,希望给没头绪的同学们一个参考! 下载地址:http://files ...

  9. BZOJ 3999 旅游

    .......好长啊. #include<iostream> #include<cstdio> #include<cstring> #include<algo ...

  10. 【LeetCode OJ】Best Time to Buy and Sell Stock

    Problem Link: http://oj.leetcode.com/problems/best-time-to-buy-and-sell-stock/ We solve this problem ...