답안 #472524

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
472524 2021-09-13T16:59:28 Z ZaZo_ Toll (BOI17_toll) C++14
7 / 100
39 ms 2696 KB
#include <bits/stdc++.h>
#define ZAZO ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define int long long
using namespace std;
vector<pair<int,int>>edges[50001];
int k , n , m , o ;
int dist[50001],vis[50001]={0};
void prepare()
{
  for(int i = 0 ; i < n+1 ; i ++) dist[i]=INT_MAX;
}
void djk(int s , int e)
{
  priority_queue<pair<int,int>>pq;
  dist[s]=0;
  pq.push({0,s});
  while(!pq.empty())
  {
    int c = -pq.top().first , u = pq.top().second;
    vis[u]=1;
    pq.pop();
    for(int i = 0 ; i < edges[u].size() ; i++)
    {
      if(!vis[edges[u][i].first]&&dist[edges[u][i].first] > dist[u] + edges[u][i].second)
      {
        dist[edges[u][i].first] = dist[u] + edges[u][i].second;
        pq.push({-dist[edges[u][i].first],edges[u][i].first});
      }
    }
  }
}
int32_t main() {
  ZAZO
  cin >> k >> n >> m >> o ;
  int pref[50011];
  for(int i = 0 ; i <= 50001 ; i ++) pref[i]=-1e9;
  for(int i = 0 ; i < m ; i ++)
  {
    int a , b , t;
    cin >> a >> b >> t;
    pref[b]=t;
  }
  if(k==1){
  for(int i = 1  ; i <= 50001 ; i++)
  {
    pref[i]+=pref[i-1];
  }
  for(int i = 0 ; i < o ; i ++)
  {
    int a , b;
    cin>>a>>b;
    if(pref[b]-pref[a]<=0) cout<<"-1"<<endl;
    else cout<<pref[b]-pref[a]<<endl;
  }
  }
  else{
    vector<pair<int,pair<int,int>>>v;
   for(int i = 0 ; i < o ; i ++)
   {
     int a , b;
     cin >> a >> b;
     v.push_back({i,{a,b}});
   }
   sort(v.begin(),v.end());
   int ans[o];
   for(int i = 0 ; i < o ; i ++) ans[i]=-1;
   for(int i = 0 ; i < v.size() ; i++)
   {
     if(i && v[i].second.first == v[i-1].second.first)
     {
       if(dist[v[i].second.second] != INT_MAX) ans[v[i].first]=dist[v[i].second.second];
     }
     else
     {
       prepare();
       djk(v[i].second.first , v[i].second.second);
       if(dist[v[i].second.second]!=INT_MAX)
         ans[v[i].first] = dist[v[i].second.second];
     }
   }
   for(int i = 0 ; i < o ; i++)
   cout<<ans[i]<<'\n';
  }
}

Compilation message

toll.cpp: In function 'void djk(long long int, long long int)':
toll.cpp:22:23: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   22 |     for(int i = 0 ; i < edges[u].size() ; i++)
      |                     ~~^~~~~~~~~~~~~~~~~
toll.cpp:19:9: warning: unused variable 'c' [-Wunused-variable]
   19 |     int c = -pq.top().first , u = pq.top().second;
      |         ^
toll.cpp: In function 'int32_t main()':
toll.cpp:67:22: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, std::pair<long long int, long long int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   67 |    for(int i = 0 ; i < v.size() ; i++)
      |                    ~~^~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 39 ms 1880 KB Output is correct
2 Correct 1 ms 1868 KB Output is correct
3 Correct 2 ms 1868 KB Output is correct
4 Correct 2 ms 1868 KB Output is correct
5 Correct 3 ms 1868 KB Output is correct
6 Correct 4 ms 1868 KB Output is correct
7 Correct 4 ms 1868 KB Output is correct
8 Correct 35 ms 1896 KB Output is correct
9 Correct 33 ms 1876 KB Output is correct
10 Correct 19 ms 1868 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 34 ms 2696 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 1868 KB Output is correct
2 Incorrect 2 ms 1868 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 1868 KB Output is correct
2 Incorrect 2 ms 1868 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 39 ms 1880 KB Output is correct
2 Correct 1 ms 1868 KB Output is correct
3 Correct 2 ms 1868 KB Output is correct
4 Correct 2 ms 1868 KB Output is correct
5 Correct 3 ms 1868 KB Output is correct
6 Correct 4 ms 1868 KB Output is correct
7 Correct 4 ms 1868 KB Output is correct
8 Correct 35 ms 1896 KB Output is correct
9 Correct 33 ms 1876 KB Output is correct
10 Correct 19 ms 1868 KB Output is correct
11 Incorrect 34 ms 2696 KB Output isn't correct
12 Halted 0 ms 0 KB -