路由器
来源:互联网 发布:37pao软件下载 编辑:程序博客网 时间:2024/04/28 09:01
Description
路由器是网络中用来转发IP报文的一种设备。
当路由器收到一个终端或者其它路由器发过来的报文时,它必须选项择最快的一条通信线路通向报文所指向的目标机器(目标机器可能是一个终端,也可能是另一个路由器)。众所周知,在两个路由器之间可能有多条通信线路,你的任务就是给出两个路由器之间最短通信时间。
每一个路由器都有一个IP来标识它自己,这个标识是唯一的。任意两点之间的通信时间单位是毫秒。每条通信线路都是全双工的(双向的)。
Input
第一行为两个整数n和m,n表示有多少个路由器,m表示有多少条通信线路。(2<=n<=100,1<=m<=1000)
接下去的m行用来描述路由器之间的线路。每行包括三个元素,两个路由器的IP地址和它们之间通信所花费的时间。
然后一行是一个整数t,表示有多少个报文。(1<=t<=1000)
接下去的t行是报文。每个报文占一行,为了简化问题,我们在每行中给出两个IP地址,分别是目标地址和源地址。你要做的就是求出两者之间的最短时间。
Output
对于每个报文,输出一行。每行只包含一个整数,表示报文给的两个IP地址之间的最短通信时间。如果不存在这样的通路,或者IP地址并不存在,则输出-1。
Sample Input
4 5
168.120.1.1 168.120.1.2 15
168.120.1.1 168.120.1.4 47
168.120.1.1 168.120.1.3 10
168.120.1.2 168.120.1.4 15
168.120.1.3 168.120.1.4 25
3
168.120.1.1 168.120.1.4
168.120.1.3 168.120.1.4
168.120.1.3 202.12.12.12
Sample Output
30
25
-1
#include <iostream>#include <string>#include <cstring>#include <map>using namespace std;int r[110][110];const int INF = 1000000;void floyd(int n)//Floyd算法{ for(int k = 1; k <= n; ++k) { for(int i = 1; i <= n; ++i) { for(int j = 1; j <= n; ++j) { r[i][j] = min(r[i][j],r[i][k] + r[k][j]); } } }}int main(){ int n,m; while(cin >> n >> m) { string source,des; int time; memset(r,0,sizeof(r)); for(int i = 1; i <= n; ++i) { for(int j = 1; j <= n; ++j) { r[i][j] = INF; } } map<string,int> ma; int num = 1; for(int i = 0; i < m; ++i) { cin >> source >> des >> time; if(ma[source] == 0) { ma[source] = num++; } if(ma[des] == 0) { ma[des] = num++; } r[ma[source]][ma[des]] = time; r[ma[des]][ma[source]] = time; } floyd(n); int t; cin >> t; while(t--) { int short_distance; cin >> source >> des; if(ma[source] == 0 || ma[des] == 0 || r[ma[source]][ma[des]] == INF) { short_distance = -1; } else { short_distance = r[ma[source]][ma[des]]; } cout << short_distance << endl; } } return 0;}
- 路由器?
- 路由器
- 路由器
- 路由器
- 路由器
- 路由器
- 路由器
- 路由器
- 路由器
- 路由器
- 路由器
- 路由器
- 路由器
- 路由器
- 路由器
- 无线路由器连接路由器
- 路由器下面再分路由器
- 路由器通信步骤 -- 路由器
- How to Install Oracle Java JDK on Ubuntu Linux
- IOS学习之performSelector:withObject:afterDelay:
- scala学习笔记(一)
- 实现模式 读书笔记
- js中几种方法的总结。(实例方法、类方法、原型方法)
- 路由器
- num的power次方
- 问题
- vue+webpack学习记录
- 双向链表中的交换节点
- 网页结构分析部分
- 请用rand1To5实现等概率随机产生1~7的随机函数rand1To7
- 项目2——小试循环
- MyBatis + Spring 整合示例代码