//数据结构实验之图论七:驴友计划
#include <bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
struct node
{
int v, w;
} Edge[1010][1010];
bool visited[1010];
int n, m, k;
int dis[1010];
int cost[1010];
void Dijkstra(int st)
{
for(int i = 1; i <= n; i++)
{
dis[i] = Edge[st][i].v;
cost[i] = Edge[st][i].w;
}
memset(visited, false, sizeof(visited));
visited[st] = true;
for(int i = 1; i <= n; i++)
{
int m = INF;
int pos;
for(int j = 1; j <= n; j++)
{
if(!visited[j] && dis[j] < m)
{
m = dis[pos = j];
}
}
visited[pos] = true;
for(int j = 1; j <= n; j++)
{
if(!visited[j])
{
if( Edge[pos][j].v + dis[pos] < dis[j])
{
dis[j] = Edge[pos][j].v + dis[pos];
cost[j] = Edge[pos][j].w + cost[pos];
}
else if(Edge[pos][j].v + dis[pos] == dis[j])
{
cost[j] = min(Edge[pos][j].w+cost[pos], cost[j]);
}
}
}
}
}
int main()
{
while(cin >> k)
{
while( k --)
{
int st, en;
cin >> n >> m >> st >> en;
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
i == j ? Edge[i][j].v = Edge[i][j].w = 0 : Edge[i][j].v = Edge[i][j].w = INF;
}
}
while(m --)
{
int i, j, v, w;
cin >> i >> j >> v >> w;
Edge[i][j].v = v;
Edge[i][j].w = w;
Edge[j][i].v = v;
Edge[j][i].w = w;
}
Dijkstra(st);
cout << dis[en] << ' ' << cost[en] << endl;
}
}
return 0;
}
//Dijkstra
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
struct node
{
int l;
int v;
} mp[1010][1010];
int main()
{
int k;
cin >> k;
while(k --)
{
int n, m, s, d;
cin >> n >> m >> s >> d;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
if(i != j)
{
mp[i][j].l = mp[i][j].v = INF;
}
else
{
mp[i][j].l = mp[i][j].v = 0;
}
}
}
while(m --)
{
int x, y, l, v;
cin >> x >> y >> l >> v;
mp[x][y].l = l;
mp[x][y].v = v;
mp[y][x].l = l;
mp[y][x].v = v;
}
for(int k = 0; k < n; k++)
{
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
if(mp[i][j].l > mp[i][k].l+mp[k][j].l)
{
mp[i][j].l = mp[i][k].l+mp[k][j].l;
mp[i][j].v = mp[i][k].v+mp[k][j].v;
}
if(mp[i][j].l == mp[i][k].l+mp[k][j].l)
{
mp[i][j].v = min(mp[i][j].v, mp[i][k].v+mp[k][j].v);
}
}
}
}
cout << mp[s][d].l << ' ' << mp[s][d].v << endl;
}
return 0;
}// Folyd
SDUT 3363 数据结构实验之图论七:驴友计划
最新推荐文章于 2023-02-28 17:10:48 发布