Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define pb push_back
- #define mp make_pair
- #define f first
- #define s second
- using namespace std;
- int a,b,c,d,e,n,m,ans,k;
- int x[1000006],fix[1000006],fx[1000006];
- int sum[1000006],sm[1000006],man[1000006];
- vector<pair<int,int> >v[1000006];
- priority_queue <pair<int,int> > q;
- priority_queue <pair<int,pair<int,int> > > Q;
- int main ()
- {
- ifstream cin("dining.in");
- ofstream cout("dining.out");
- cin>>n>>m>>k;
- for(int i=1;i<=m;i++)
- {
- cin>>a>>b>>c;
- v[a].pb(mp(b,c));
- v[b].pb(mp(a,c));
- }
- q.push(mp(0,n));
- while(!q.empty())
- {
- pair<int,int> t=q.top();q.pop();
- if(fix[t.s])continue;
- man[t.s]=-t.f;
- for(int j=0;j<v[t.s].size();j++)
- {
- q.push(mp(-(v[t.s][j].s-t.f),v[t.s][j].f));
- }
- fix[t.s]=1;
- }
- for(int i=1;i<=n;i++)fix[i]=0;
- for(int i=1;i<=k;i++)
- {
- cin>>a>>b;
- q.push(mp(-(man[a]-b),a));
- }
- while(!q.empty())
- {
- pair<int,int> t=q.top();q.pop();
- if(fix[t.s])continue;
- sum[t.s]=-t.f;
- for(int j=0;j<v[t.s].size();j++)
- {
- q.push(mp(-(v[t.s][j].s-t.f),v[t.s][j].f));
- }
- fix[t.s]=1;
- }
- for(int i=1;i<=n;i++)
- {
- if(sum[i]<=man[i])sum[i]=1;else sum[i]=0;
- }
- for(int i=1;i<n;i++)
- {
- cout<<sum[i]<<endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement