// floyd + 位運算
/* 題目大意:有若干家公司,他們分別在若干個城市的路由器間鋪設了自己的光纖,
現在問,如果要從路由器a到路由器b傳送資料,能否只使用一家公司的光纖而達到目的,
如能則分別輸出這些公司的代號。
思路:雖然不是最短路,卻可以用每對頂點的最短路徑 floyd-warshell 演算法來求解。
dist[i][j]代表 i 到 j 的一條可能包含前k個點中若干個頂點的所有路徑中最短的路徑。
而在本題中
graph[i][j]代表i 到 j 的包含前k個點中若干個頂點的所有路徑中的可行解的狀態(壓縮到整形里位表示)
計算方式為:
graph[i][j] = graph[i][j] | (graph[i][p] & graph[p][j])
最後也就根據要求查詢位狀態即可。
*/#include#includeusing namespace std;
const int maxn = 201;
int n;
int graph[maxn][maxn];
void init()
}void floyd()
}void output()
if (!any)printf("-");
putchar('\n');
}putchar('\n');
}int main()
return 0;
}
POJ2570 二進位制,位運算,Floyd
題意 給你乙個有向圖,兩點之間有多種連線方式,然後每次詢問都問你點a,b之間有哪些方式可以到達,每個小字母是乙個方式.思路 很巧妙的位運算和floyd應用,借助floyd的更新過程,去更新任意兩組邊組合起來的長邊,如 map i j 是由 map i k 和 map k j 接起來的,更新方式很容易...
二進位制 二進位制起源
現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...
poj 2965二進位制
有乙個4 4的 符號矩陣,改變乙個元素的符號,所在行列都反轉最少次數,讓所有符號變成 號 並列印出符號位置 include include include include using namespace std int chess,step bool flag false int map 5 5 i...