Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:有重邊,vector怎麼辦。。。附wrong answer代碼--》In Reply To:有重邊,vector怎麼辦。。。附wrong answer代碼--》 Posted by:OYBDOOO at 2018-08-19 00:57:08 > #include<iostream> > #include<cstdlib> > #include<cstdio> > #include<vector> > #include<queue> > #include<cstring> > using namespace std; > struct po > { > int shu,dist,qian; > bool operator < (const po&other) const{ > return dist>other.dist; > } > }; > struct pp > { > int shu,quan,qian; > }; > int meiyong[1]; > vector<pp>ve[10005]; > priority_queue<po>Q; > bool vist[20005]; > int dis[20005]; > int qian[20005]; > int main() > { > //freopen("heap.in","r",stdin); > //freopen("heap.out","w",stdout); > int n,e,i,j,t; > pp go; > memset(meiyong,127,sizeof(meiyong)); > cin>>t>>n>>e; > for(i=1;i<=e;i++) > { > int x,y,q,l; > cin>>x>>y>>q>>l; > go.shu=y; > go.quan=q; > go.qian=l; > ve[x].push_back(go); > } > /*for(i=1;i<=n;i++) > { > for(j=0;j<ve[i].size();j++) > cout<<ve[i][j].shu<<" "; > cout<<endl; > } > for(i=1;i<=n;i++) > { > for(j=0;j<ve[i].size();j++) > cout<<ve[i][j].qian<<" "; > cout<<endl; > }*/ > po ls; > ls.shu=1; > ls.dist=0; > ls.qian=t; > Q.push(ls); > //cout<<meiyong[0]<<endl; > /*for(i=2;i<=n;i++) > { > ls.shu=i; > ls.dist=meiyong[0]; > Q.push(ls); > }*/ > i=0; > while(i!=2*n) > { > if(Q.empty()) > break; > //if(i==5) > // int jieyong=0; > int dds=Q.top().shu,ddd=Q.top().dist,ddq=Q.top().qian; > if(ddq<0) > { > Q.pop(); > continue; > } > //cout<<dds<<" "<<ddd<<" "<<ddq<<endl; > for(j=0;j<ve[dds].size();j++) > { > if(!vist[ve[dds][j].shu]) > { > ls.shu=ve[dds][j].shu; > ls.dist=ddd+ve[dds][j].quan; > ls.qian=ddq-ve[dds][j].qian; > Q.push(ls); > } > } > int tt; > //cout<<"*****"<<Q.top().shu<<"*****"<<endl; > tt=Q.top().qian; > if(tt<0) > { > Q.pop(); > continue; > } > //t=tt; > i++; > if(!vist[Q.top().shu]) > { > vist[Q.top().shu]=1; > dis[Q.top().shu]=Q.top().dist; > } > if(vist[n]) > break; > Q.pop(); > } > if(vist[n]) > cout<<dis[n]; > else cout<<"-1"; > return 0; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator