程序疑似有 UB

P1339 [USACO09OCT] Heat Wave G

```cpp #include<iostream> #include<cstdio> #include<cstring> #include<vector> #define N 2505 #define M 12405 #define W 2500005 using namespace std; int n,m,s,t,cnt; int fir[N],nex[M],val[M],dis[N],vis[N],poi[M]; vector<int>tong[W]; int re() { int x=0,p=1; char y=getchar(); for(;y>'9'||y<'0';y=getchar()) if(y=='-') p=-p; for(;y>='0'&&y<='9';y=getchar()) x=x*10+y-'0'; return x*p; } void wr(int x) { if(x<0) putchar('-'),x=-x; if(x>9) wr(x/10); putchar(x%10+'0'); } void ins(int x,int y,int z) { nex[++cnt]=fir[x]; poi[cnt]=y; val[cnt]=z; fir[x]=cnt; } signed main() { n=re(),m=re(),s=re(),t=re(); for(int i=1;i<=m;i++) { int u=re(),v=re(),w=re(); ins(u,v,w),ins(v,u,w); } memset(dis,127,sizeof(dis)); dis[s]=0,tong[0].push_back(s); for(int i=0;i<=W;i++) { while(tong[i].size()) { int now=tong[i].back(); tong[i].pop_back(); if(vis[now])continue; vis[now]=1; for(int i=fir[now];i;i=nex[i]) { int p=poi[i]; if(dis[p]>dis[now]+val[i]) { dis[p]=dis[now]+val[i]; tong[dis[p]].push_back(p); } } } } wr(dis[t]); return 0; } ```
by _mi_ka_ @ 2022-09-09 09:36:05


> ```cpp > for(int i=0;i<=W;i++) > { > while(tong[i].size()) > { > ``` `i == W` 时越界。
by ud2_ @ 2022-09-09 10:05:06


|