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:我的过了2969ms……In Reply To:我的过了2969ms…… Posted by:karlgeorge at 2017-04-20 23:46:06 > //我的过了 > #include<iostream> > #include<cstdio> > #include<cstring> > #include<algorithm> > #include<queue> > #include<functional> > > using namespace std; > typedef long long ll; > typedef pair<ll,ll> P; > > const ll maxn=50000+10; > const ll inf=1e15; > > ll e,v; > > vector<P> G[maxn]; > ll w[maxn]; > ll d[maxn]; > > void init(){ > for(ll i=0;i<=v;++i) > d[i]=inf; > d[1]=0; > } > > void dij(){ > priority_queue<P,vector<P>,greater<P> > q; > q.push(make_pair(0,1)); > while(!q.empty()){ > ll now=q.top().second; > q.pop(); > for(ll i=0;i<G[now].size();++i){ > ll t=G[now][i].first; > if(d[t]>d[now]+G[now][i].second){ > d[t]=d[now]+G[now][i].second; > q.push(make_pair(d[t],t)); > } > } > } > } > > int main(){ > ios_base::sync_with_stdio(0); > cin.tie(0); > ll T; > cin>>T; > while(T--){ > memset(d,0,sizeof(d)); > cin>>v>>e; > for(ll i=1;i<=v;++i){ > cin>>w[i]; > G[i].clear(); > } > init(); > for(ll i=1;i<=e;++i){ > ll a,b,c; > cin>>a>>b>>c; > G[a].push_back(make_pair(b,c)); > G[b].push_back(make_pair(a,c)); > } > dij(); > ll ans=0; > bool flag=false; > for(ll i=2;i<=v;++i){ > ans+=(d[i]*w[i]); > if(d[i]>=inf){ > flag=true; > break; > } > } > if(flag){ > cout<<"No Answer"<<endl; > continue; > } > cout<<ans<<endl; > } > return 0; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator