随笔分类 -  图论-->最短路径问题

POJ1125 ZOJ1082
摘要:题意:有N个股票经济人可以互相传递消息,他们之间存在一些单向的通信路径。现在有一个消息要由某个人开始传递给其他所有人,问应该由哪一个人来传递,才能在最短时间内 让所有人都接收到消息。若不存在这样一个人,则输出disjoint 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define inf 9999999 8 #define N 105 9 int n,map[N][N];10 11 void Floyd()//Floyd算每两个点之间的距离 12 {13 f... 阅读全文

posted @ 2013-08-09 11:42 爱∪ 阅读(176) 评论(0) 推荐(0)

ZOJ2027
摘要:题意:一个人要去旅行 给你起点和终点 求最少花费 其中花费为经过路径的总费用减去该路径的中的最大花费 ,Floyd 变型 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define inf 9999999 9 #define N 20510 int n,m,sum[N][N],maxcost[N][N];11 map mp; //map映射 12 13 void Floyd() //Floyd变型 14 {15 for(int k=0; ... 阅读全文

posted @ 2013-08-09 10:26 爱∪ 阅读(201) 评论(0) 推荐(0)

POJ2253 ZOJ1942
摘要:题意:给出一个无向图,求一条0~1的路径使得路径上的最大边权最小. 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define inf 9999999 9 #define N 20510 11 double g[N][N];12 int n;13 struct node14 {15 int x,y;16 }P[N];17 double dis(node a,node b)18 {19 return sqrt(double((a.x... 阅读全文

posted @ 2013-08-09 01:42 爱∪ 阅读(273) 评论(0) 推荐(0)

POJ2263 ZOJ 1952
摘要:最短路变型 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define N 205 9 int g[N][N];10 mapmp; //map映射 11 int n,m;12 13 void Floyd() //最短路变型 14 {15 for(int k=0; k>s1>>s2>>w;48 if(mp.find(s1)==mp.end()) mp[s1] = cnt++;49 u = mp... 阅读全文

posted @ 2013-08-09 00:50 爱∪ 阅读(156) 评论(0) 推荐(0)

POJ2570, ZOJ1967
摘要:题意:给你 n个点 m条边 每条边有些公司支持 问 a点到b点的路径有哪些公司可以支持 这里是一条路径中要每段路上都要有该公司支持 才算合格的一个公司 分析:map[i][j] 等于 i直接到 j 的 公司数,加上i经过中间节点到 j 的 公司数 因为每两个站点间的公司数最多为26个,所以可以用位运算, 用二进制去表示每个公司 1表示该路径上有该公司 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 205 8 int n; 9 int map[N... 阅读全文

posted @ 2013-08-08 23:58 爱∪ 阅读(153) 评论(0) 推荐(0)

ZOJ3088
摘要:题意:给定同一个图上的两种路径,求出从某点出发到另一点的路径长度来回长度之比最大的情况,最后还要输出路径。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define inf 9999999 9 #define N 1005 10 #define M 1005 11 struct Edge 12 { 13 int v,w,next; 14 Edge(){} 15 Edge(int V,int W,int ... 阅读全文

posted @ 2013-08-08 14:03 爱∪ 阅读(222) 评论(0) 推荐(0)

POJ3259(spfa判负环)
摘要:思路:如果某个顶点入队列的次数超过了n,那么久存在负环! 记得清空队列 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define inf 9999999 9 #define N 52010 #define M 552011 int size,n,m,l;12 int dis[N],vis[N],head[N],in[N];13 struct Edge14 {15 int v,w,next;16 Edge(){}17 Ed... 阅读全文

posted @ 2013-08-08 01:38 爱∪ 阅读(181) 评论(0) 推荐(0)

POJ3268
摘要:题意:给你n个奶牛,m个农场,在x农场开派对,问你所有奶牛中必须花费最大的时间 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define M 100005 9 #define N 100510 #define inf 999999911 int size1,size2,n,m,x;12 int dis[N],vis[N],head1[N],head2[N];13 int sum[N];14 struct Edge15 {16 int v... 阅读全文

posted @ 2013-08-08 00:52 爱∪ 阅读(207) 评论(0) 推荐(0)

ZOJ1092 POJ2240
摘要:题目:给出几个国家,并给出每个国家之间的汇率,求这几个国家构成的图中所形成的环中,问是否存在套汇的可能,即自身汇率大于1 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define N 35 9 #define M 100010 map mp; //map 映射 11 struct Edge12 {13 int u;14 int v;15 double w;16 }edge[M]; // 结构体存边 17 dou... 阅读全文

posted @ 2013-08-06 14:42 爱∪ 阅读(673) 评论(0) 推荐(0)

ZOJ1298 POJ1135
摘要:题意就不说了。。1.如果最后倒下的牌是关键牌,其时间及位置是第一张关键牌到其他关键牌中最短路径的最大值及对应的关键牌2.最后倒下的牌是两张关键牌之间的某张普通牌,时间t = (dis[i] + dis[j] + g[i][j])/2.0;位置在这两张关键牌之间3.比较上面两种情况的最大值,然后决定取那种方法 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 #define inf 9999999 9 #define N 50510 double dis[N];11 in... 阅读全文

posted @ 2013-08-04 07:08 爱∪ 阅读(178) 评论(0) 推荐(0)

导航