4 solutions

  • 2
    @ 2024-7-13 14:02:18
    #include<bits/stdc++.h>
    using namespace std;
    const int N=210;
    int dist[N];
    int dx[N];
    int dy[]={-1,1};
    int n,A,B;
    int bfs(int x)
    {
       memset(dist,0x3f,sizeof dist);
       dist[x]=0;
       queue<int> q;
       q.push(x);
       while(q.size())
       {
          int t=q.front();
          q.pop();
          if(t==B)
          {
             return dist[B];
          }
          for(int i=0;i<2;i++)
          {
             int a=t+dx[t]*dy[i];
             if(a<0||a>n)
             {
                continue;
             }
             if(dist[a]!=0x3f3f3f3f)
             {
                continue;
             }
             dist[a]=dist[t]+1;
             q.push(a);
          }
       }
       return -1;
    }
    int main()
    {
       cin>>n>>A>>B;
       for(int i=1;i<=n;i++)
       {
          cin>>dx[i];
       }
       cout<<bfs(A);
       return 0;
    }
    
    • 1
      @ 2025-5-10 9:24:26
      #include<bits/stdc++.h>
      using namespace std;
      const int N=210;
      int dist[N];
      int dx[N];
      int dy[]={-1,1};
      int n,A,B;
      int bfs(int x)
      {
         memset(dist,0x3f,sizeof dist);
         dist[x]=0;
         queue<int> q;
         q.push(x);
         while(q.size())
         {
            int t=q.front();
            q.pop();
            if(t==B)
            {
               return dist[B];
            }
            for(int i=0;i<2;i++)
            {
               int a=t+dx[t]*dy[i];
               if(a<0||a>n)
               {
                  continue;
               }
               if(dist[a]!=0x3f3f3f3f)
               {
                  continue;
               }
               dist[a]=dist[t]+1;
               q.push(a);
            }
         }
         return -1;
      }
      int main()
      {
         cin>>n>>A>>B;
         for(int i=1;i<=n;i++)
         {
            cin>>dx[i];
         }
         cout<<bfs(A);
         return 0;
      }
      
      
      • 1
        @ 2025-1-18 16:17:31
        #include<bits/stdc++.h>
        using namespace std;
        const int N=210;
        int dist[N];
        int dx[N];
        int dy[N];
        int n,A,B;
        int bfs(int x)
        {
        	list<int> q;
        	q.push_back(x);
        	dist[q]=0;
        	while(dist.size())
        	{
        		int t=dy.front();
        		dy.pop();
        		if(q==A)
        		{
        			return dist[B];
        		}
        		for(int i=0;i<2;i++)
        		{
        			int a=t+dx[t]*dy[i];
        			if(a<0||a>n) break;
        			if(dist[a]!=0x3f3f3f) break;
        			dy[a]=dy[t]+1;
        			q.push(dx[i]);
        		}
        	}
        	return -1;
        }
        int main()
        {
        	cin>>n>>A>>B;
        	for(int i=1;i<=n;i++)
        	{
        		cin>>dy[i];
        	}
        	cout<<bfs(n);
            return 0;
        }
        
        • -2
          @ 2024-12-3 19:20:04
          #include<bits/stdc++.h>
          using namespace std;
          const int N=210;
          int dist[N];
          int dx[N];
          int dy[]={-1,1};
          int n,A,B;
          int bfs(int x)
          {
             memset(dist,0x3f,sizeof dist);
             dist[x]=0;
             queue<int> q;
             q.push(x);
             while(q.size())
             {
                int t=q.front();
                q.pop();
                if(t==B)
                {
                   return dist[B];
                }
                for(int i=0;i<2;i++)
                {
                   int a=t+dx[t]*dy[i];
                   if(a<0||a>n)
                   {
                      continue;
                   }
                   if(dist[a]!=0x3f3f3f3f)
                   {
                      continue;
                   }
                   dist[a]=dist[t]+1;
                   q.push(a);
                }
             }
             return -1;
          }
          int main()
          {
             cin>>n>>A>>B;
             for(int i=1;i<=n;i++)
             {
                cin>>dx[i];
             }
             cout<<bfs(A);
             return 0;
          }
          
          
          • 1

          Information

          ID
          221
          Time
          1000ms
          Memory
          256MiB
          Difficulty
          3
          Tags
          # Submissions
          67
          Accepted
          15
          Uploaded By