Эта проблема больше связана с программированием, чем с конкурентным программированием. Я относительно новичок, когда дело доходит до написания программ с использованием теории графов. Я объяснил вопрос ниже. Я закодировал решение с помощью необходимой логики apt, но по некоторым причинам мой вывод не соответствует тестовым сценариям. Пожалуйста, помогите мне с моим кодом, приведенным ниже. (ПРИМЕЧАНИЕ: я включил тестовые случаи, ожидаемый вывод и вывод, который я получаю в конце кода)
Я кратко опишу постановку задачи:
Учитывая график, где каждое ребро имеет вес 6 единиц (не нужно подключаться), используйте Поиск в ширину, чтобы найти кратчайшее расстояние от исходного узла до всех других узлов.
Ссылка на проблему: https://www.hackerrank.com/challenges/bfsshortreach/problem
Формат ввода:
Первая строка содержит целое число, количество запросов. Каждый из следующих наборов строк имеет следующий формат:
Первая строка содержит два разделенных пробелом целых числа n и m, количество узлов и ребер в графе.
Каждая строка из m последующих строк содержит два разделенных пробелом целых числа u и v, описывающих ребро, соединяющее узел u с узлом v.
Последняя строка содержит одно целое число s, обозначающее индекс начального узла для процедуры BFS.
Мой код:
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <queue> using namespace std;
void addedge(int u,int v, vector <int> edges[]) {
edges[u].push_back(v);
edges[v].push_back(u);
}
void bfs(int n,int m,vector <int> edges[],int s) {
queue <int> q;
vector <int> d(n+1);
for(int o=0;o<n;o++) d[o]=-1;
q.push(s); d[s]=0;
while(!q.empty())
{
int temp=q.front(); q.pop();
for(auto x : edges[temp])
{
if(d[x] == -1) { d[x]=d[temp] + 6; q.push(x);}
}
}
for(auto l=0;l<d.size();l++) cout<<d[l]<<" ";
}
int main() {
int q,n,i,m,s,t,u;
cin>>q;
for(i=0;i<q;i++)
{
cin>>n>>m;
vector <int> edges[n];
for(i=0;i<m;i++)
{
cin>>t>>u;
addedge(t,u,edges);
int s;
cin>>s;
bfs(n,m,edges,s);
cout<<"\n";
}
}
return 0;
}
Input:
2
4 2
1 2
1 3
1
3 1
2 3
2
Expected Output:
6 6 -1
-1 6
Actual Output:
-1 0 6 -1 0
-1 6 12 0 0