zoukankan      html  css  js  c++  java
  • SPFA--P3905 道路重建

    破坏掉一些路径,修复他的代价就是该路径的长度,没有破坏的路径,修复它的代价是0(*链式前向星建图)

    SPFA求最短路:

     1 #include <cstdio>
     2 #include <iostream>
     3 #include <algorithm>
     4 #include <cmath>
     5 #include <queue>
     6 using namespace std;
     7 int n,m,d;
     8 int a,b;
     9 int x,y;
    10 int dis[10000];
    11 bool vis[10000];
    12 bool mark[1000][1000];
    13 struct node
    14 {
    15     int x,y,w;
    16 }edge[10000];
    17 struct ask
    18 {
    19     int w;
    20     int to;
    21     int next;
    22 }ed[10000];
    23 int head [10000];
    24 int tot =0;
    25 void add (int u,int v,int w)
    26     {
    27       ed[++tot].w=w;
    28       ed[tot].to=v;
    29       ed[tot].next=head[u];
    30       head[u]=tot;
    31 }
    32 void SPFA(int s)
    33 {
    34       queue<int> q;
    35         for(int i=1;i<=n;i++){//初始化, 
    36             dis[i]=0x7fffffff;
    37             vis[i]=0;
    38         }
    39         q.push(s);//放入起点 
    40         dis[s]=0;//自己到自己为0; 
    41         vis[s]=1;
    42         while(!q.empty()){ 
    43             int u=q.front();
    44             q.pop();vis[u]=0;//弹出队首 
    45             for(int i=head[u];i;i=ed[i].next){
    46                 int v=ed[i].to;

    48 if(dis[v]>dis[u]+ed[i].w){ 49 dis[v]=dis[u]+ed[i].w; 50 if(!vis[v]){ 51 vis[v]=1; 52 q.push(v);//重新放入; 53 } 54 } 55 } 56 } 57 } 58 int main() 59 { 60 scanf ("%d",&n); 61 scanf ("%d",&m); 62 for (int i = 1;i <= m;i++) 63 { 64 scanf ("%d%d%d",&edge[i].x,&edge[i].y,&edge[i].w); 65 } 66 scanf ("%d",&d); 67 for (int i = 1;i <= d;i++) 68 { 69 scanf ("%d%d",&x,&y); 70 mark[x][y]=1; 71 mark[y][x]=1; 72 } 73 scanf ("%d%d",&a,&b); 74 for (int i = 1;i <= m;i++) 75 { 76 if (mark[edge[i].x][edge[i].y]==1) 77 { 78 add(edge[i].x,edge[i].y,edge[i].w); 79 add(edge[i].y,edge[i].x,edge[i].w); 80 } 81 else 82 { 83 add(edge[i].x,edge[i].y,0); 84 add(edge[i].y,edge[i].x,0); 85 } 86 } 87 SPFA(a); 88 cout<<dis[b]<<endl; 89 return 0; 90 }
  • 相关阅读:
    Javascript 运动中Offset的bug——逐行分析代码,让你轻松了解运动的原理
    Javascript 多物体运动——逐行分析代码,让你轻松了解运动的原理
    thymeleaf设置网页脚本里面的值
    win10系统瞬间黑屏问题
    Spring boot启动端口设置
    idea打包jar包
    java socket使用例子
    java使用socket读取网页
    java读取网页
    Error:Unexpected lock protocol found in lock file. Expected 3, found 0
  • 原文地址:https://www.cnblogs.com/very-beginning/p/12294522.html
Copyright © 2011-2022 走看看