567 – Risk//bfs

來源:互聯網
上載者:User

因為沒有權值,所以不用使用Floyd演算法求最短路。

直接用bfs做。。。

#include<cstdio>#include<cstring>using namespace std;const int maxn = 21;int G[maxn][maxn];int vis[maxn][maxn];struct node{    int level;    int u;} q[maxn*maxn];int bfs(int s,int e){    int front = 1;    int rear = 1;    q[1].u = s;    q[1].level = 0;    while(front <= rear)    {        int u = q[front].u;        int level = q[front++].level;        if(u == e) return level;        for(int v = 1; v <= 20; v++)        {            if(G[u][v] && !vis[u][v])            {                vis[u][v] = vis[v][u] = 1;                q[++rear].level = level + 1;                q[rear].u = v;            }        }    }}int main(){    int begin,T = 0;    while(scanf("%d",&begin) != EOF)    {        T++;        memset(G,0,sizeof(G));        int a,num,t;        for(int i = 0; i < begin; i++)        {            scanf("%d",&a);            G[1][a] = G[a][1] = 1;        }        for(int i = 1; i < 19; i++)        {            scanf("%d",&num);            for(int j = 0; j < num; j++)            {                scanf("%d",&a);                G[i+1][a] = G[a][i+1] = 1;            }        }        printf("Test Set #%d\n",T);        scanf("%d",&t);        int s,e;        for(int i = 0; i < t; i++)        {            memset(vis,0,sizeof(vis));            scanf("%d%d",&s,&e);            printf("%2d to %2d: %d\n",s,e,bfs(s,e));        }        printf("\n");    }    return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.