只AC#7、8、9、10的看过来

P5683 [CSP-J2019 江西] 道路拆除

@[Cry_For_theMoon](/user/340632) 最短路初值不赋INF赋啥?...
by fresh_boy @ 2020-09-16 18:05:10


我说我哪错了呢!!!!!
by 老子是北瓜 @ 2020-10-01 16:37:53


@[Cry_For_theMoon](/user/340632) 为什么-1不行 请大佬指点 ``` #include<bits/stdc++.h> using namespace std; int n,m,s,ss,tt,t,d[3010][4],sum=1e9; vector<int> v[3010]; queue<int> q; bool b; void f(int st,int se,int e,int w) { if(st==se) { d[w][e]=0; return; } int dd[3010]; memset(dd,-1,sizeof(dd)); q.push(st); dd[st]=0; while(!q.empty()) { int x=q.front(); q.pop(); for(int i=0;i<v[x].size();i++) { if(dd[v[x][i]]==-1) { q.push(v[x][i]); dd[v[x][i]]=dd[x]+1; } } } d[w][e]=dd[se]; return; } int main() { cin>>n>>m; for(int i=1;i<=m;i++) { int x,y; cin>>x>>y; v[x].push_back(y); v[y].push_back(x); } cin>>s>>t>>ss>>tt; for(int i=1;i<=n;i++) { f(1,i,1,i); f(i,s,2,i); f(i,ss,3,i); if(sum>=d[i][1]+d[i][2]+d[i][3]) { if(d[i][1]+d[i][2]<=t&&d[i][1]+d[i][3]<=tt) { b=1; sum=d[i][1]+d[i][2]+d[i][3]; } } } if(b==0)cout<<-1; else cout<<m-sum; } ```
by liang_bowen @ 2021-08-26 20:24:11


@[yrj_葵](/user/225100) 这题边权为1,可以用bfs,所以不用赋初值了
by 966123anyunchuan @ 2021-10-20 19:23:30


妙哉,一开始用```-1```初始化结果没判不能到达导致20pts,感谢大佬
by LJ07 @ 2022-04-25 20:56:56


|