【帝国ol 源码】【时分线源码】【趣丁网源码】memwatch源码

2025-01-01 12:17:23 来源:flora源码 分类:休闲

1.c语言编写路线

memwatch源码

c语言编写路线

       #include <stdio.h>

       #include <malloc.h>

       #include<stdlib.h>

       #define MAX

       #define MAXNUM

       int previous[MAX-1];// 求路径需要

       int pp[MAX-1];// 记录最短路径

       typedef struct graphnode

       {

        int vexnum; //顶点

        int arcnum; //弧

        int gra[MAX][MAX]; //邻接矩阵表示0或1

       }Graph;

       int dist[MAX]; // 最短距离

       int arc[MAX][MAX]; // 权

       int main()

       {

        void Dijkstra(Graph *g,源码帝国ol 源码int v);

        int i,j,n,m;

        int v; //源点

        Graph *G;

        G=(Graph *)malloc(sizeof(Graph));

        printf("vexnum:\n");

        scanf("%d",&G->vexnum);

        printf("arcnum:\n");

        scanf("%d",&G->arcnum);

        printf("graph:\n");

        for(i=0;i<G->vexnum;i++)

        for(j=0;j<G->vexnum;j++)

        {

        scanf("%d",&G->gra[i][j]);

        }

        for(i=0;i<G->vexnum;i++)

        for(j=0;j<G->vexnum;j++)

        {

        if(G->gra[i][j]==1)

        {

        printf("请输入%d到%d的权值:",i,j);

        scanf("%d",&arc[i][j]);//若有弧 则输入i到j直接的权

        }

        else

        arc[i][j]=MAXNUM;

        }

        printf("请输入源点v的值:");

        scanf("%d",&v);

        Dijkstra(G,v);

        printf("请输入源点所要到达的点:\n");

        scanf("%d",&n);

        pp[0]=0;

        i=1;

        m=n;// 记录n的值

        while(n!=0)// 求0到其他点路径

        {

        pp[i]=previous[n];

        i++;

        n=previous[n];

        }

        printf("Path:0 -> ");

        for(j=G->vexnum-1;j>=0;j--)

        if(pp[j]!=0)

        printf(" %d -> ",pp[j]);

        printf("%d\n",m);

        return 0;

       }

       void Dijkstra(Graph *G,int v)

       {

        int previous[MAX-1];

        int newdist;

        bool sign[MAX];

        if(v<0||v>MAX-1)

        {

        printf("该源点不存在!\n");

        return;

        }

        for(int i=0;i<G->vexnum;i++) //初始化

        {

        dist[i]=arc[v][i];

        sign[i]=false;

        if(dist[i]==MAXNUM)

        previous[i]=0;

        else

        previous[i]=v;

        }

        dist[v]=0;

        sign[v]=true;

        for(i=0;i<G->vexnum;i++) // i<n-1 待定

        {

        float temp=MAXNUM;

        int u=v; //u 中间变量

        for(int j=0;j<G->vexnum;j++)

        if((!sign[j])&&(dist[j]<temp))

        {

        u=j;

        temp=dist[j];

        }

        sign[u]=true;

        for(j=0;j<G->vexnum;j++)

        if((!sign[j])&&(arc[u][j]<MAXNUM))

        {

        newdist=dist[u]+arc[u][j];

        if(newdist<dist[j])

        {

        dist[j]=newdist;

        previous[j]=u;

        }

        }

        }

        for(i=0;i<G->vexnum;i++)

        if(dist[i]!=MAXNUM)

        printf("从%d到%d的最短路径是 %d\n",v,i,dist[i]);

        else

        printf("从%d到%d无最短路径\n",v,i);

        printf("\n");

       }

       è¿™æ˜¯Dijkstra算法求单源最短路径算法 上程序中 假定顶点从0开始,搜索整个图,然后求出0到其他各点的最短距离,存放在dist数组中,main函数后面几行是求0到其他各点的路径 基本上能满足你的要求了

更多资讯请点击:休闲

热门资讯

thrift 源码下载

2025-01-01 12:05578人浏览

linux init源码

2025-01-01 09:392136人浏览

推荐资讯

以軍對黎巴嫩南部進行大規模打擊

以色列國防軍發言人哈加里21日晚發表視頻聲明說,以軍當天在發現黎巴嫩真主黨準備向以色列發動火箭彈襲擊後,對黎巴嫩南部進行了大規模打擊。哈加里說,以軍出動數十架戰機打擊了約400個真主黨的火箭彈發射裝置

dede免费源码_devmem源码

1.dede网站模板怎么安装教程安装dede源码模板dede网站模板怎么安装教程安装dede源码模板 dedecmsDreamweaver模板,怎么安装?原子网说:很多站长即使从网上下载Dream