poj2570 Fiber Network 最短路floyd
2013-10-07 19:15
375 查看
虽说是自己邪恶的,但是看了别人的思路,真是很巧妙的 位运算的应用,这道题目floyd只是个外壳,其实精华在于位运算,题目意思有点难理解 好好看,题意我也懒得写,复制了别人的 ,
题意:某条道路由一些公司修建,修建道路的公司可以提供这条路上的连通,询问哪些公司可以提供从A到B的路径.每个公司由一个小写字母表示。
思路:因为只有26个字母 所以可能用二进制去表示每个公司 1表示该路径上有该公司 比如说 1-->3 这条路径上有 abc这三个公司 则mat[1][3] 二进制表示为00..0111; 然后就是用floyd传递闭包。
题意:某条道路由一些公司修建,修建道路的公司可以提供这条路上的连通,询问哪些公司可以提供从A到B的路径.每个公司由一个小写字母表示。
思路:因为只有26个字母 所以可能用二进制去表示每个公司 1表示该路径上有该公司 比如说 1-->3 这条路径上有 abc这三个公司 则mat[1][3] 二进制表示为00..0111; 然后就是用floyd传递闭包。
#include<iostream> #include<cstdio> #include<list> #include<algorithm> #include<cstring> #include<string> #include<queue> #include<stack> #include<map> #include<vector> #include<cmath> #include<memory.h> #include<set> #define ll long long #define LL __int64 const ll INF=9999999999999; using namespace std; #define M 400000100 #define inf 0xfffffff //vector<int,int> G[20002]; //vector<pair<int,int>> ::iterator iter; //map<ll,int>mp; //map<ll,int>::iterator p; int mp[212][212]; void clear() { memset(mp,0,sizeof(mp)); } int main(void) { int n; bool flag=false; while(scanf("%d",&n),n) { clear(); int u,v; char s[26]; for(int i=0;;i++) { scanf("%d %d",&u,&v); if(u+v == 0) break; scanf("%s",s); for(int j=0;j<strlen(s);j++) { mp[u][v]|=1<<(s[j]-'a'); } } for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) mp[i][j]=mp[i][j]|(mp[i][k]&mp[k][j]); scanf("%d %d",&u,&v); while(u!=0 && v!=0) { if(mp[u][v]) { for(int i=0;i<26;i++) { if(mp[u][v]&(1<<i)) printf("%c",i+'a'); } } else printf("-"); puts(""); scanf("%d %d",&u,&v); } puts(""); } }
相关文章推荐
- poj 2570 Fiber Network(最短路+Floyd)
- poj 2570 Fiber Network(最短路+Floyd)
- POJ 2570 Fiber Network(最短路 二进制处理)
- POJ 2570 Fiber Network(Floyd+位运算)
- poj 2570 Fiber Network(floyd)
- poj 2570 Fiber Network(floyd)
- poj 2570 Fiber Network (Floyd)
- POJ 2570 Fiber Network(最短路 二进制处理)
- poj 2570 Fiber Network --floyd求传递闭包加位运算
- POJ--2570--Fiber Network【floyd+位运算】
- POJ 2570 Fiber Network(Floyd传递闭包+状态压缩)
- poj 2570 Fiber Network(floyd)
- poj 2570 Fiber Network(传递闭包,floyd+位运算)
- POJ 2570 floyd 二进制
- POJ 3660 Cow Contest(Floyd最短路)
- POJ 3660 Cow Contest 最短路floyd
- 最短路(Floyd_Warshall) POJ 2253 Frogger
- POJ-2570 Fiber Network
- poj 1603 Risk(最短路floyd)
- poj 2253 Frogger(最短路 floyd)