两顶点之前有路径吗? (20 分)

一道题目探讨了判断两个顶点之间是否存在路径的问题,需要注意包括自身在内的路径情况。

真好
这道题有一个坑点在于自身是有路径的

int hasPath(struct Graph *g, int v, int w){
	for(int i=0;i<g->v;i++)g->Adj[i][i]=1;
	for (int i = 0; i < g->v; i++)
            {
                for (int j =0; j <g->v; j++)
                {
                	for(int l = 0;l<g->v;l++){
                		if (g->Adj[i][j] ==1&& g->Adj[l][j]==1)
                        g->Adj[i][l] =1;
					}
                    
                }
            }
    int sum=1;
    //ghy(g,0,v);
	for(int i=0;i<g->v;i++){
		if(g->Adj[v][i]==1){
			for(int j=0;j<g->v;j++){
				if(g->Adj[i][j]==1){
					g->Adj[v][j]=1;
				}
			}
		} 
	}
	for(int i=0;i<g->v;i++){
		if(g->Adj[v][i]==1&&v!=i){
			sum++;
		}
	} 
	printf("%d\n",sum);
	sum=1;
	for(int i=0;i<g->v;i++){
		if(g->Adj[w][i]==1){
			for(int j=0;j<g->v;j++){
				if(g->Adj[i][j]==1){
					g->Adj[w][j]=1;
				}
			}
		} 
	}
	for(int i=0;i<g->v;i++){
		if(g->Adj[w][i]==1&&w!=i)sum++;
	} 
	printf("%d\n",sum);
    if(g->Adj[v][w]==1)return 1;
    else return 0;
} 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值