5 solutions

  • 2
    @ 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;
    }
    
    
    • 0
      @ 2026-2-11 10:49:09
      #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
        @ 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;
        }
        
        • -3
          @ 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;
          }
          
          • -5
            @ 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
            86
            Accepted
            21
            Uploaded By