程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> hdu 4771 求一點遍歷所有給定點的最短路(bfs+dfs)

hdu 4771 求一點遍歷所有給定點的最短路(bfs+dfs)

編輯:C++入門知識

hdu 4771 求一點遍歷所有給定點的最短路(bfs+dfs)


題目如題。題解如題。

由於目標點最多只有4個,先bfs出倆倆最短路(包括起點),再dfs最短路。)0s1A;(當年弱跪杭州之題,現看如此簡單)

#include
#include
#include
#include
#include
using namespace std;
struct point
{
    int x,y;
    int cnt;
};
char a[105][105];
vectorpo;
int n,m;int k;
int mindis[10][10];
int vis[105][105];
int f[4][2]={0,1,0,-1,1,0,-1,0};
int bfs(int s,int t)
{
      memset(vis,0,sizeof(vis));
      queueq;
      po[s].cnt=0;
      po[t].cnt=-1;
      q.push(po[s]);
      vis[po[s].x][po[s].y]=1;
      while(!q.empty())
      {
          point cur=q.front();
          q.pop();
          point next;
          for(int i=0;i<4;i++)
           {
               next.x=cur.x+f[i][0];
               next.y=cur.y+f[i][1];
               if(next.x>=0&&next.x=0&&next.y=mins)return ;
    if(lev==k)
    {
        if(sumdis

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved