摘要: #include #include#include#define M 100#define N 100using namespace std;typedef struct node{ int matrix[N][M]; //邻接矩阵 int n; //顶点数 int e; //边数 }MGraph; bool visited[1100];void DijkstraPath(MGraph g,int *dist,int *path,int v0) //v0表示源顶点 { int i,j,k;memset(visited,false,sizeof(visited)); for(i=0;i0& 阅读全文
posted @ 2013-08-23 19:14 我家小破孩儿 阅读(310) 评论(0) 推荐(0)
摘要: 畅通工程续Time Limit: 3000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 20890Accepted Submission(s): 7258Problem Description某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多。这让行人很困扰。现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离。Input本题目包含多 阅读全文
posted @ 2013-08-23 16:20 我家小破孩儿 阅读(272) 评论(0) 推荐(0)
摘要: 最短路径算法在日常生活中,我们如果需要常常往返A地区和B地区之间,我们最希望知道的可能是从A地区到B地区间的众多路径中,那一条路径的路途最短。最短路径问题是图论研究中的一个经典算法问题,旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。 算法具体的形式包括:(1)确定起点的最短路径问题:即已知起始结点,求最短路径的问题。(2)确定终点的最短路径问题:与确定起点的问题相反,该问题是已知终结结点,求最短路径的问题。在无向图中该问题与确定起点的问题完全等同,在有向图中该问题等同于把所有路径方向反转的确定起点的问题。(3)确定起点终点的最短路径问题:即已知起点和终点,求两结点之间的最短路径。(4 阅读全文
posted @ 2013-08-23 15:03 我家小破孩儿 阅读(507) 评论(0) 推荐(0)
摘要: #include #include#include usingnamespacestd;intparent[10];intn,m;inti,j;structedge{intu,v,w;//边的顶点,权值 }edges[10];//初始化并查集 voidUFset(){for(i=1;i=0;temp=parent[temp]);//压缩路径 while(temp!=i){intt=parent[i];parent[i]=temp;i=t;}returntemp;}//合并两个元素a,b voidmerge(inta,intb){intr1=find(a);intr2=find(b);inttm 阅读全文
posted @ 2013-08-23 13:47 我家小破孩儿 阅读(145) 评论(0) 推荐(0)
摘要: #include #include#include using namespace std; #define M 100 //最多边数#define N 100 //最多顶点数typedef struct edge { int a; int b; int value; }edge; edge edges[M]; int final[N]; //存储父节点int nodecount[N]; //存储该节点孩子结点的个数bool cmp(edge a,edge b) { return a.value%d\n",edges[i].a,edges[i].b); } if(num==n-1) 阅读全文
posted @ 2013-08-23 13:38 我家小破孩儿 阅读(159) 评论(0) 推荐(0)
摘要: 所谓生成树,就是n个点之间连成n-1条边的图形。而最小生成树,就是权值(两点间直线的值)之和的最小值。首先,要用二维数组记录点和权值。如上图所示无向图:int map[7][7]; map[1][2]=map[2][1]=4; map[1][3]=map[3][1]=2; ......然后再求最小生成树。具体方法是:1.先选取一个点作起始点,然后选择它邻近的权值最小的点(如果有多个与其相连的相同最小权值的点,随便选取一个)。如1作为起点。visited[1]=1;pos=1;//用low[]数组不断刷新最小权值,low[i](0#include#define MAX 0x3f3f3f3f//创 阅读全文
posted @ 2013-08-23 10:03 我家小破孩儿 阅读(192) 评论(0) 推荐(0)