路由 解題報告

2021-06-01 04:58:06 字數 1734 閱讀 6027

路由 

【問題描述】

有乙個tcp/ip網路:

? 每台計算機都有乙個或多個網路介面。

? 每個介面根據它的ip位址和子網掩碼來識別:即兩個4位元組的數,兩個字

節之間有乙個」.」號.子網掩碼有乙個二進位制表示法:有k個」1」,然

後是 m 個」0」,k+m=8*4=32(如 212.220.35.77 是乙個 ip 地

址,255.255.255.128是乙個子網掩碼)。

? 兩台計算機如果屬於同樣的子網,當且僅當(ip1 and netmask1)=(ip2

andnetmask2),其中ipi和netmaski是第i臺計算機的ip位址和子網

掩碼。

? 在乙個子網裡,兩台計算機可以直接傳遞訊息包。

? 如果兩台計算機屬於不同的子網,訊息包的傳遞需要通過其他的計算機.

訊息包能通過乙個具有兩個子網介面的計算機從乙個子網傳遞到另乙個

你的任務是找到兩個給定計算機之間訊息傳遞的最短路.

【輸入檔案】

第一行是乙個數n,表示網路中有n臺計算機,然後是n個部分,描述每台計算

機的介面,每一部分第一行是整數k表示該計算機的介面數,然後是k行,描述每

個介面:它的ip位址和子網掩碼,最後一行是兩個整數,給你的所要求路線的兩

臺計算機.其中2<=n<=90andk<=5

【輸出檔案】

如果路線存在輸出」yes」,然後下一行是訊息包在路線上傳遞時所依次經過

的計算機號,如果路線不存在,則輸出」no」。

【輸入樣例】

6 2

10.0.0.1255.0.0.0

192.168.0.1255.255.255.0

1 10.0.0.2255.0.0.0

3 192.168.0.2255.255.255.0

212.220.31.1255.255.255.0

212.220.35.1255.255.255.0

1 212.220.31.2255.255.255.0

2 212.220.35.2255.255.255.0

195.38.54.65255.255.255.224

1 195.38.54.94255.255.255.224

16 【輸出樣例】

yes

1356

這道題的模型比較複雜,但是程式其實很簡單。

一道裸spfa。主要是建邊的時候比較複雜

根據題設,每乙個數字對應的權值為2^1、2^8、2^16、2^24

建邊的條件是兩台計算機至少有兩個介面的ip&netmask值相同。

0&0=0

1&0=0

1&1=1

#include long g[92];

long n;long k;

unsigned long cmptr1[92][7];

unsigned long cmptr2[92][7];

const long oo = 0x7fff0000;

long dist[92];

long map[92][92];

long p;long q;

long que[10000000];

bool used[92];

void spfa()

{ long l=0;long r=0;

for (long i=1;i

Block Voting 解題報告

這道題做的有點狼狽,效率不高,差一點就tle的ac了。看status裡的,ac的時間大多數都是0ms的。肯定有乙個更有效率的演算法的。下面說下我的狼狽演算法。出處 http acm.jlu.edu.cn joj showproblem.php?pid 1223 問題描述 求每個party的權值。第i...

Safebreaker 解題報告

又是吉林大學一道acm題目,題目很簡單,直接暴力解決。出處 http acm.jlu.edu.cn joj showproblem.php?pid 1718 問題描述 對乙個給定數0000 9999 根據一系列猜測,判斷這個數是否存在,存在的話,是否唯一 例如 3321,給定數 作出猜測,1223 ...

零 解題報告

零是個好數字啊。萬物都是從0開始的,譬如說c語言的陣列下標,你在世界上存在的天數啊等等等等,然後乙個數xor它自己結果也是等於0的。根據慣例,我們的第一句話一定與題目無關的。其實題目還是很簡單,求出給出的若干個數的乘積末尾有多少個0。輸入檔案zero.in。第一行包含乙個整數n,代表乘數的個數。接下...