#include <iostream>
using namespace std;
#define ding 6;
#define bian 10;
#define MaxInt 32767
#define MVNum 100
typedef char VerTexType;
typedef int ArcType;
char vex[6] = {'1','2','3','4','5','6'};
char arc[100][2] = {{'1','2'},{'1','3'},{'1','4'},{'2','3'},{'2','5'},{'3','4'},{'3','5'},{'3','6'},{'4','6'},{'5','6'}};
int w[10]={6,1,5,5,3,5,6,4,2,6};
int Vexset[5];
int D[6][6];
int Path[6][6];
int a[6];
typedef struct{
VerTexType vexs[MVNum];
ArcType arcs[MVNum][MVNum];
int vexnum,arcnum;
}AMGraph;
int LocateVex(AMGraph G,char v){
for(int i = 0;i<G.vexnum;i++){
if(G.vexs[i]==v)
return i;
}
return 0;
}
bool CreateUDN(AMGraph &G){
int e=0;
G.vexnum = ding;
G.arcnum = bian;
for(int i = 0;i<G.vexnum;i++)
G.vexs[i] = vex[i];
for(int i = 0;i<G.vexnum;i++)
for(int j = 0;j<G.vexnum;j++)
G.arcs[i][j] = MaxInt;
for(int k = 0;k<G.arcnum;k++){
char v1,v2;
int i,j;
v1 = arc[k][0];
v2 = arc[k][1];
i = LocateVex(G,v1);
j = LocateVex(G,v2);
G.arcs[i][j] = w[k];
G.arcs[j][i] = G.arcs[i][j];
}
return true;
}
void ShortestPath_Floyd(AMGraph G){
for(int i=0;i<G.vexnum;i++)
for(int j=0;j<G.vexnum;j++){
D[i][j] = G.arcs[i][j];
if(D[i][j]<MaxInt&&i!=j) Path[i][j] = i;
else Path[i][j] = -1;
}
for(int i=0;i<G.vexnum;i++){
for(int j=0;j<G.vexnum;j++)
if(D[i][j]!=MaxInt) cout<<D[i][j]<<". ";
else cout<<0<<". ";
cout<<endl;
}
cout<<endl;
for(int k=0;k<G.vexnum;k++){
for(int i=0;i<G.vexnum;i++)
for(int j=0;j<G.vexnum;j++)
if(D[i][k]+D[k][j]<D[i][j]&&i!=j)
{
D[i][j] = D[i][k]+D[k][j];
Path[i][j] = Path[k][j];
}
for(int i=0;i<G.vexnum;i++){
for(int j=0;j<G.vexnum;j++)
{
if(D[i][j]==MaxInt) cout<<0<<". ";
else cout<<D[i][j]<<". ";
}
cout<<endl;
}
cout<<endl;
for(int i=0;i<G.vexnum;i++){
for(int j=0;j<G.vexnum;j++)
cout<<Path[i][j];
cout<<endl;
}
}
}
void DFS(AMGraph G,int v1,int v2,int k,int p){
if(v1==v2&&k==0){
for(int i=0;i<G.vexnum;i++)
cout<<a[i]<<endl;
cout<<endl;
return ;
}
else if(k>0){
a[v1] = p;
for(int i=0;i<G.vexnum;i++){
if(G.arcs[v1][i]<MaxInt&&a[i]==0){
int w =k - G.arcs[v1][i];
DFS(G,i,v2,w,p+1);
}
}
a[v1] = 0;
}
}
void DFST(AMGraph G,int v1,int v2,int k)
{
for(int i=0;i<G.vexnum;i++)
a[i] = 0;
DFS(G,v1,v2,k,1);
}
int main() {
AMGraph G;
int a[6];
CreateUDN(G);
DFST(G,0,4,9);
cout << "Hello world! - cpp.jsrun.net." << endl;
return 0;
}