为什么爆零??

P1828 [USACO3.2] 香甜的黄油 Sweet Butter

@[2624643550sc](/space/show?uid=38634) markdown 了解一下
by Ending_story @ 2018-09-29 09:40:15


``` #include<bits/stdc++.h> using namespace std; const int maxc=2910; const int maxp=810; struct edge{ int v,w,next; }e[maxc]; int g[maxp],head[maxp],size,bj[maxp],ans[maxp],dis[maxp],n,p,c; void adde(int u,int v,int w) { e[size].v=v; e[size].w=w; e[size].next=head[u]; head[u]=size++; } void spfa(int x) { queue<int> q; q.push(x); dis[x]=0; bj[x]=1; while(!q.empty()) { int u=q.front(); q.pop(); bj[u]=0; for(int i=head[u];i!=-1;i=e[i].next) { int v=e[i].v,w=e[i].w; if(dis[v]>dis[u]+w) { dis[v]=dis[u]+w; if(!bj[v]) bj[v]=1,q.push(v); } } } for(int i=1;i<=p;i++) { if(dis[i]>=1061109560) { ans[x]=99999999;break; } ans[x]+=g[i]*dis[i]; } } int ans1=999999999; void init() { freopen("putin.txt","r",stdin); } int main() { //init(); memset(head,-1,sizeof(head)); scanf("%d%d%d",&n,&p,&c); for(int i=1;i<=n;i++) { int a; scanf("%d",&a); g[a]++; } for(int i=1;i<=c;i++) { int u,v,w; scanf("%d%d%d",&u,&v,&w); adde(u,v,w); adde(v,u,w); } for(int i=1;i<=p;i++) { memset(dis,0x3f3f3f,sizeof(dis)); memset(bj,0,sizeof(0)); spfa(i); } for(int i=1;i<=p;i++) { ans1=min(ans1,ans[i]); } printf("%d\n",ans1); return 0; } ```
by plysc @ 2018-09-29 09:44:27


|