| ||||||||||
| 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 | |||||||||
有重邊,vector怎麼辦。。。附wrong answer代碼--》#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