优化后的代码没有显示
时间: 2024-02-12 20:08:14 浏览: 75
非常抱歉,似乎我的回答中代码部分被截断了,以下是完整的优化后代码:
```cpp
#include <iostream>
#include <cstring>
#include <queue>
#define N 2005
#define INF 1e18
using namespace std;
typedef long long ll;
typedef pair<ll, int> P;
int n, m, s, t;
bool vis[N];
ll dist[N];
vector<P> G[N];
void dijkstra(int s) {
priority_queue<P, vector<P>, greater<P> > que;
memset(vis, false, sizeof(vis));
fill(dist, dist + N, INF);
dist[s] = 0; que.push(P(0, s));
while(!que.empty()) {
P p = que.top(); que.pop();
int v = p.second;
if(vis[v]) continue;
vis[v] = true;
for(int i = 0; i < G[v].size(); i++) {
int u = G[v][i].second;
ll d = G[v][i].first;
if(dist[u] > dist[v] + d) {
dist[u] = dist[v] + d;
que.push(P(dist[u], u));
}
}
}
}
int main() {
cin >> n >> m >> s >> t;
for(int i = 0; i < m; i++) {
int a, b; ll c;
cin >> a >> b >> c;
G[a].push_back(P(c, b));
G[b].push_back(P(c, a));
}
dijkstra(s);
cout << dist[t] << endl;
return 0;
}
```
相比原始代码,这个代码更加简洁高效,同时使用了 STL 中的一些常用容器,使得代码可读性更高。
阅读全文