SDUT3363数据结构实验之图论七:驴友计划

来源:互联网 发布:web编程 编辑:程序博客网 时间:2024/06/05 03:00
#include<bits/stdc++.h>#define MAX 2147483647using namespace std;struct ndoe{    int length,cost;} a[550][550];int v,e,v_start,v_end;void creat(){    for(int i=0; i<v; i++)        for(int j=0; j<v; j++)            if(i!=j)                a[i][j].length=a[i][j].cost=MAX;    for(int j=0; j<e; j++)    {        int v1,v2,length1,cost1;        scanf("%d%d%d%d",&v1,&v2,&length1,&cost1);        a[v1][v2].length=a[v2][v1].length=length1;        a[v1][v2].cost=a[v2][v1].cost=cost1;    }}void fl(){    for(int i=0; i<v; i++)        for(int j=0; j<v; j++)            for(int k=0; k<v; k++)                if(a[k][j].length>a[k][i].length+a[i][j].length)                {                    a[k][j].length=a[k][i].length+a[i][j].length;                    a[k][j].cost=a[k][i].cost+a[i][j].cost;                }                else if(a[k][j].length==a[k][i].length+a[i][j].length)                    if(a[k][j].cost>a[k][i].cost+a[i][j].cost)                        a[k][j].cost=a[k][i].cost+a[i][j].cost;}int main(){    int T;    scanf("%d",&T);    while(T--)    {        scanf("%d%d%d%d",&v,&e,&v_start,&v_end);        creat();        fl();        printf("%d %d\n",a[v_start][v_end].length,a[v_start][v_end].cost);    }}

0 0
原创粉丝点击