#include<iostream>
#include<stdlib.h>
using namespace std;
#define MAX 100
struct aisle
{
int origin;
int destination;
int distance;
};
struct graph
{
aisle *element;
int dot;
int brim;
};
void assignment(aisle &k,int origin,int destination,int distance)
{
k.origin=origin;
k.destination=destination;
k.distance=distance;
}
void dijkstra(graph &k)
{
int i,j,n;
int t[k.dot];
int distance_t=0;
int a[k.dot][k.dot];
for(i=0;i<k.dot;i++)
{
for(j=0;j<k.dot;j++)
{
a[i][j]=MAX;
}
}
i=0;
t[i]=1;
while(t[i]!=k.dot)
{
for(j=0;j<k.dot;j++)
{
if(t[i]==k.element[j].origin)
{
if(i!=0)
{
if(a[i][k.element[j].destination]<a[i][k.element[j].destination-1])
{
a[i][k.element[j].distance]=k.element[j].distance+distance_t;
}
else
a[i][k.element[j].destination]=a[i][k.element[j].destination-1];
}
else
a[i][k.element[j].distance]=k.element[j].distance;
}
}
n=a[i][0];
for(j=0;j<k.dot;j++)
{
if(n>a[i][j])
{
t[i++]=j+1;
distance_t=a[i][j];
}
}
}
cout<<distance_t;
}
void print(aisle &k)
{
cout<<'<';
cout<<k.origin;
cout<<',';
cout<<k.destination;
cout<<',';
cout<<k.distance;
cout<<'>'<<endl;
}
graph initgraph(int dot=4,int brim=4)
{
int i;
graph k;
k.element=(aisle *)malloc(k.brim*(sizeof(aisle)));
//***********输入*********************//
/*
for(i=0;i<k.brim;i++)
{
cin>>k.element[i].origin;
cin>>k.element[i].destination;
cin>>k.element[i].distance;
}
*/
assignment(k.element[0],1,2,1);
assignment(k.element[1],1,3,3);
assignment(k.element[2],2,4,4);
assignment(k.element[3],3,4,2);
k.brim=brim;
k.dot=dot;
return k;
}
int main()
{
int dot;
int brim;
int i;
graph k=initgraph();//dot与brim可以代入
for(i=0;i<k.brim;i++)
{
print(k.element[i]);
}
dijkstra(k);
return 0;
}