![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
最短路
文章平均质量分 59
墨温温
呆萌理工女~ ~
展开
-
CF 295B
这是一个最短路问题,给出一个图的邻接矩阵,按照所给顺序删除图中的点,然后去求删除该点之前的最短路。 可以这样思考,删除的逆向也就是加点,按照删除顺序的逆序依次向图中加点,求出每次添加点之后的最短路。 AC代码(比较丑) #include #include #include #include using namespace std; #define inf 9999999999原创 2015-07-13 09:40:39 · 354 阅读 · 0 评论 -
最短路之Dijkstra算法
在所有的标记都清零的情况下,设d[x]表示源点到x点的最小值,设0为源点的话显然,d[0]=0; 令其他点的d[x]=inf,为了找出最小值。 循环n次 { 在所有未标记过的节点中,找出d值最小的结点x; 给x标记; 更新从x出发的所有边; } 模板: int Dijkstra(int s) { memset(v,0,sizeof(v));原创 2015-07-14 20:34:07 · 332 阅读 · 0 评论 -
POJ 2387
求最短路,套模板即可~ #include #include #include using namespace std; #define inf 0x7ffffff int w[1005][1005],v[1005],d[1005]; int t,n; int dijkstra(int s) { int p,minn; memset(v,0,sizeof(v)); for(int原创 2015-07-21 18:25:51 · 446 阅读 · 0 评论 -
POJ 2253
题意:求解从起点到终点的所有路径中,最长边最小是多少? 思路:dijkstra算法变形,用d[i]表示某条路径中的最长边即可。 AC代码: #include #include #include #include using namespace std; #define inf 0x7ffffff double edge[205][205]; double x[205],y[205],原创 2015-07-22 10:33:57 · 627 阅读 · 0 评论 -
POJ 1797
题意:求从起点到终点的所有路径中,最短边的最大值~ 思路:dijkstra算法~ 变形~d[i]表示从起点到i点的最短边。原创 2015-07-22 17:11:31 · 277 阅读 · 0 评论 -
POJ 3268
题意:所有牛要去X那里参加聚会,每头牛都走的是最短路,求往返的最长时间~(给出的边是单向的) 思路:dijkstra算法~ 所有牛从X返回时,可看做是求以X为起点的最短路,所有牛去X时,可以将邻接矩阵转置一下~ 两次结果求和,再取最大值即可~ AC代码: #include #include #include using namespace std; #define inf 0x7原创 2015-07-22 15:25:32 · 472 阅读 · 0 评论 -
POJ 3660
题意:给出任意两头牛在比赛中的位次关系,求根据所给的数据,能确定几头牛的rank~ 思路:求有向图的传递闭包问题~ 简单说,传递性就是如果点i和点k连通,点k和点j连通,那么点i和点j也连通~ 由此我们就可以判断出图中任意两点是否相连。 这道题可以用floyd算法求解,最后判断所有与某个点相连的点的个数是否等于n-1,就可以得出结果辣~ AC代码: #include #include原创 2015-07-22 16:08:22 · 619 阅读 · 0 评论 -
POJ 1860
需要判断是否有正权环存在,Bellman-Ford算法就可以辣~ AC代码: #include #include #include #include using namespace std; struct Edge { int u,v; double r,c; }edge[210]; int n,m,s,k; double w; double d[105]; int bellm原创 2015-07-22 20:34:21 · 511 阅读 · 0 评论 -
POJ 3259
求是否存在负圈环~ 把NO写成了N0,调了一下午orz~~ #include #include #include using namespace std; #define inf 0x7ffffff int n,m,s,k; int d[510]; struct Edge { int u,v,w; }edge[5300]; int bellmanford() { int flag;原创 2015-07-24 16:20:35 · 272 阅读 · 0 评论