Submission #224073

# Submission time Handle Problem Language Result Execution time Memory
224073 2020-04-17T07:34:36 Z oolimry Olympic Bus (JOI20_ho_t4) C++14
0 / 100
40 ms 3292 KB
#include <bits/stdc++.h>

using namespace std;
long long inf = (1LL << 62LL);

typedef pair<long long, long long> ii;
vector<ii> adjO[205];
vector<ii> adj[205];
long long dis[205];
int n, m; 

long long dij(int s, int t){
	fill(dis, dis + (n+1), inf);
	
	priority_queue<ii, vector<ii>, greater<ii> > dtr; /// use greater<int>
	dtr.push(ii(0,s));
    dis[s] = 0;
    ///first is minpath, second is vertex
    while(!dtr.empty()){
        ii cur = dtr.top();
        dtr.pop();
        for(int j = 0;j < (int) adj[cur.second].size();j++){
            ii nei = adj[cur.second][j];
            if(nei.first + cur.first < dis[nei.second]){
                dis[nei.second] = nei.first + cur.first;
                dtr.push(ii(dis[nei.second],nei.second));
            }
        }
    }
    return dis[t];
}

struct edge{
	long long u, v, c, d;
};
vector<edge> edges;

void invert(int u, int v){
	for(int j = 0;j < adj[u].size();j++){
		if(adj[u][j].second == v){
			adj[v].push_back(ii(adj[u][j].first,u));
			swap(adj[u][j], adj[u].back());
			adj[u].pop_back();
			return;
		}
	}
	assert(false);
}

void subtask1(){
	long long ans = dij(1, n)+ dij(n, 1);
	for(edge e : edges){
		invert(e.u, e.v);
		ans = min(ans, dij(1,n) + dij(n,1) + e.d);
		invert(e.v, e.u);
	}
	cout << ans;
	exit(0);
}
int main(){
	//freopen("i.txt","r",stdin);
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	
	cin >> n >> m;
	for(int i = 0;i < m;i++){
		int u, v, c, d; cin >> u >> v >> c >> d;
		edges.push_back({u,v,c,d});
		adj[u].push_back(ii(c,v));
	}
	
	if(m <= 1000) subtask1();
	
	
}

Compilation message

ho_t4.cpp: In function 'void invert(int, int)':
ho_t4.cpp:39:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int j = 0;j < adj[u].size();j++){
                ~~^~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 40 ms 384 KB Output is correct
2 Incorrect 5 ms 384 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 28 ms 3292 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 39 ms 384 KB Output is correct
2 Incorrect 6 ms 384 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 40 ms 384 KB Output is correct
2 Incorrect 5 ms 384 KB Output isn't correct
3 Halted 0 ms 0 KB -