Bessie Come Home_专业打酱油_百度空间
题读错了,WA了一次,裸的最短路。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#include <iterator>
#include <functional>
#include <string>
#include <queue>
#include <numeric>
#include <fstream>

using namespace std;

struct edge_t {
edge_t *next;
struct vertex_t *dest;
int weight;
};

struct vertex_t {
edge_t *edges;
int dist;
bool operator < (vertex_t const vertex) const {
return dist > vertex.dist;
}
};

edge_t edges[100000];
edge_t *end_of_edges(edges);
vertex_t vertices[1000];

int nr_vertices(100);

inline
void
add_edge(int src, int dest, int weight)
{
end_of_edges->next = vertices[src].edges;
end_of_edges->dest = &vertices[dest];
end_of_edges->weight = weight;
vertices[src].edges = end_of_edges++;

return;
}

void
dijkstra(vertex_t *source)
{
priority_queue<vertex_t> pq;

for (vertex_t *iter = vertices; iter != vertices + nr_vertices; ++iter) {
iter->dist = 1000000;
}
source->dist = 0;

pq.push(*source);
while (!pq.empty()) {
vertex_t current(pq.top());

pq.pop();
for (edge_t *iter = current.edges; iter; iter = iter->next) {
if (iter->dest->dist > current.dist + iter->weight) {
iter->dest->dist = current.dist + iter->weight;
pq.push(*iter->dest);
}
}
}

return;
}

int
main()
{
ifstream fin("comehome.in");
ofstream fout("comehome.out");
vector<int> dests;
int nr_edges;
int source;
int result(0x7fffffff);
int no;

cin.rdbuf(fin.rdbuf());
cout.rdbuf(fout.rdbuf());

cin >> nr_edges;
while (nr_edges--) {
char src, dest;
int weight;

cin >> src >> dest >> weight;
src -= 'A';
dest -= 'A';
if (src < ('Z' - 'A')) {
dests.push_back(src);
}
if (dest < ('Z' - 'A')) {
dests.push_back(dest);
}

add_edge(src, dest, weight);
add_edge(dest, src, weight);
}

dijkstra(&vertices['Z' - 'A']);
for (vector<int>::iterator iter = dests.begin(); iter != dests.end(); ++iter) {
if (vertices[*iter].dist < result) {
result = vertices[*iter].dist;
no = *iter;
}
}

cout << (char)(no + 'A') << " " << result << endl;

return 0;
}


郑重声明:资讯 【Bessie Come Home_专业打酱油_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——