Submission #224089

# Submission time Handle Problem Language Result Execution time Memory
224089 2020-04-17T07:49:38 Z oolimry Olympic Bus (JOI20_ho_t4) C++14
0 / 100
78 ms 3296 KB
#include <bits/stdc++.h>

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

typedef pair<long long, long long> ii;
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 subtask1(){
	long long ans = dij(1, n)+ dij(n, 1);
	for(int i = 0;i < m;i++){
		for(int i = 1;i <= n;i++) adj[i].clear();
		
		long long res = 0;
		for(int j = 0;j < m;j++){
			edge e = edges[j];
			if(i == j){
				adj[e.v].push_back(ii(e.c,e.v));
				res += e.d;
			}
			else adj[e.u].push_back(ii(e.c,e.v));
		}
		ans = min(ans, dij(1,n) + dij(n,1) + res);
	}
	
	if(ans >= inf) ans = -1;
	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++){
		long long 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();
	
	
}
# Verdict Execution time Memory Grader output
1 Correct 45 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
3 Correct 63 ms 384 KB Output is correct
4 Correct 78 ms 384 KB Output is correct
5 Incorrect 35 ms 384 KB Output isn't correct
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 26 ms 3292 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 50 ms 504 KB Output is correct
2 Correct 6 ms 384 KB Output is correct
3 Incorrect 20 ms 3296 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 45 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
3 Correct 63 ms 384 KB Output is correct
4 Correct 78 ms 384 KB Output is correct
5 Incorrect 35 ms 384 KB Output isn't correct
6 Halted 0 ms 0 KB -