条条大路通罗马(邻接矩阵法)

来源:互联网 发布:sql求和语句查询 编辑:程序博客网 时间:2024/06/15 02:31

N个城市(N<=10,09编号,城市间要么有路,要么没路,计算城市AB之间到底有多少条路。

输入:N A B1<N<=10,0<=A,B<=9A为出发城市,B为目的城市。然后n行表示行编号的城市到其他城市有没有路,0表示没有,1表示有路。

输出:AB有多少条路

输入:3 0 2

      1 1 1

      1 1 1

      1 1 1

输出:2

#include<iostream>#include<string>using namespace std;int main(){     int n,a,b;cin>>n>>a>>b;int **r=new int*[n];int *visit=new int[n];int *que=new int[n];for(int i=0;i<n;i++){r[i]=new int[n];visit[i]=0;}for(int i=0;i<n;i++)for(int j=0;j<n;j++)cin>>r[i][j];int top=-1,tail=-1,s,num=0;que[++tail]=a;visit[a]=1;while(top!=tail){         s=que[++top];           //出列一个 for(int i=0;i<n;i++) { if(r[s][i]==1&&visit[i]==0&&i!=b)     //连通性&&访问过没 { que[++tail]=i; visit[i]=1; } else if(r[s][i]==1&&i==b)      //到达b时,不需要对b进行操作,直接判断队列中下一个 num++;              //到达一次路线加1 }}cout<<num<<endl;delete []que;    delete []visit;for(int i=0;i<n;i++)delete []r[i];return 0;}

0 0
原创粉丝点击