输入一个无向图<V,E>    V<=1e5, E<=3e5

现在另外给k条边(u=1,v=s[k],w=y[k])

问在不影响从结点1出发到所有结点的最短路的前提下,最多可以删除k条边的多少条

 

跑最短路的时候维护或者统计就好了

一开始用spfa.然后TLE 45...好久没写  Dij+堆优化   ...

 

p.s.优先队列默认大顶堆

 

Dij+堆优化   264ms

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <iostream>
 4 #include <algorithm>
 5 #include <cmath>
 6 #include <queue>
 7 #include <set>
 8 #include <string>
 9 using namespace std;
10 
11 #define ll long long
12 #define maxn 100010
13 #define maxm 700010
14 
15 int head[maxn];
16 struct edge{
17     int v,w,nxt;
18 }e[maxm];
19 int E;
20 void init(){E=0;memset(head,-1,sizeof(head));}
21 void addedge(int u,int v,int w){
22     e[E].v=v,e[E].w=w,e[E].nxt=head[u];
23     head[u]=E++;
24 }
25 priority_queue<pair<ll,int> >que;
26 bool vis[maxn];
27 //ll d[maxn];
28 int main(){
29     int n,m,k;
30     while(~scanf("%d%d%d",&n,&m,&k)){
31         init();
32         for(int i=0;i<m;++i){
33             int u,v,w;
34             scanf("%d%d%d",&u,&v,&w);
35             addedge(u,v,w);
36             addedge(v,u,w);
37         }
38         que.push(make_pair(0ll,1));
39         for(int i=0;i<k;++i){
40             int s,y;
41             scanf("%d%d",&s,&y);
42             que.push(make_pair(0ll-y,-s));
43         }
44         memset(vis,false,sizeof(vis));
45         int ans=0;
46         while(!que.empty()){
47             pair<ll,int> tmp = que.top();que.pop();
48             ll dis = -tmp.first;
49             int u = tmp.second;
50             if(u<0){
51                 u=-u;
52                 if(vis[u])++ans;
53             }
54             if(vis[u]) continue;
55             vis[u]=true;
56             //d[u] = dis;
57             for(int i=head[u];i!=-1;i=e[i].nxt)
58                 if(vis[e[i].v]==false)
59                     que.push(make_pair( -dis-e[i].w, e[i].v));
60         }
61         printf("%d\n",ans);
62     }
63     return 0;
64 }
View Code

相关文章:

  • 2022-12-23
  • 2021-07-03
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-28
  • 2021-11-18
猜你喜欢
  • 2021-10-26
  • 2021-12-22
  • 2022-12-23
  • 2022-12-23
  • 2021-07-24
  • 2021-12-17
  • 2022-02-06
相关资源
相似解决方案