首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Uva 多源最短路有关问题

2012-10-31 
Uva多源最短路问题http://uva.onlinejudge.org/index.php?optioncom_onlinejudge&Itemid8&category116&

Uva 多源最短路问题
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=116&page=show_problem&problem=508


题目大意:给定20个点,以及一些连接这些点的边,然后多次任意给定两点,求起始点到终点所经过的最少边数。


题目分析:此题可以把图看作是一个所有权值均为1的带权无向图,即求任意顶点之间的最短路问题,用Floyd算法。


由于此题的数据量很少,所以直接用bfs也可。


代码:

//权值均为1的多源最短路问题//可以用bfs,由于需要多次查询,故效率不高//可以用floyd算法,O(n^3),查询为O(1)#include #include #include #define INF  100000using namespace std;const int maxn=50;int adj[maxn][maxn];//邻接矩阵int d[maxn][maxn];//记录距离int main(){    int k,u,v;    int c=0;    while(cin>>k)    {        c++;        printf("Test Set #%d\n",c);        memset(adj,0,sizeof(adj));        int i=0;        while(k--)        {            cin>>u;            u--;            adj[u][i]=1;            adj[i][u]=1;        }        int j;        for(j=1;j>k;            while(k--)            {                cin>>u;                u--;                adj[u][i]=1;                adj[i][u]=1;            }        }        for(i=0;i>n;        for(i=1;i>u>>v;            printf("%2d to %2d:%2d\n",u,v,d[u-1][v-1]);        }        printf("\n");    }    return 0;}

热点排行