Загрузка...

В чем проблема

Тема в разделе C/C++ создана пользователем impelix 17 янв 2023. 175 просмотров

  1. impelix
    impelix Автор темы 17 янв 2023 5 28 ноя 2021
    Есть код, на заходит он только на 9 из 30 тестов. ВРоде логика правильная, а в чем проблема понять не могу.
    Задача
    Профессор Флойд живёт в очень опасном районе города. Ежедневно бандиты грабят на улицах прохожих. Читая криминальную хронику, профессор Флойд вычислил вероятность быть ограбленным при проходе по каждой улице города. Теперь он хочет найти наиболее безопасный путь от дома до университета, в котором он преподаёт. Иными словами, он хочет найти путь от дома до университета, для которого вероятность быть ограбленным минимальна. Входные данные В первой строке находятся два числа N и M - количество зданий и количество улиц, соединяющих здания (1≤N≤100,1≤M≤N⋅(N−1)2). В следующей строке находятся числа S и E -- номер дома, в котором живёт профессор и номер дома, в котором находится университет соответственно. Далее в M строках расположены описания дорог: 3 целых числа si,ei,pi - здания, в которых начинается и заканчивается дорога и вероятность в процентах быть ограбленным, пройдя по дороге соответственно (1≤si,ei≤N,0≤pi≤100, дороги двунаправленные). Гарантируется, что существует хотя бы один путь от дома профессора до университета.

    C
    #include <iostream>
    #include <vector>

    using namespace std;

    double INF = 1000000;
    int main() {
    int n, m, x, y;
    cin >> n >> m >> x >> y;
    vector<vector<double>>g(n, vector<double>(n, INF));
    for(int i = 0; i < m; ++i){
    int x1, y1;
    double temp;
    cin >> x1 >> y1 >> temp;
    g[--x1][--y1] = temp / 100;
    }
    for (int k=0; k<n; ++k)
    for (int i=0; i<n; ++i)
    for (int j=0; j<n; ++j)
    if (g[i][k] < INF && g[k][j] < INF)
    g[i][j] = min(g[i][j], 1 - (1 - g[i][k]) * (1 - g[k][j]));
    cout << g[--x][--y];
    return 0;
    }
     
Загрузка...
Top