Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c++;int导致输出最大值 我试图实现Dijkstra算法来解决C++中的编码挑战。然而,我在处理大量数据时遇到了一些问题。在数字非常大的情况下,此代码生成最大有符号int值_C++ - Fatal编程技术网

c++;int导致输出最大值 我试图实现Dijkstra算法来解决C++中的编码挑战。然而,我在处理大量数据时遇到了一些问题。在数字非常大的情况下,此代码生成最大有符号int值

c++;int导致输出最大值 我试图实现Dijkstra算法来解决C++中的编码挑战。然而,我在处理大量数据时遇到了一些问题。在数字非常大的情况下,此代码生成最大有符号int值,c++,C++,有人能不能快速看一下,指出我看不到的缺陷 代码如下: int main() { long long int n; long long int m; cin >> n; cin >> m; vector<pair<long long int, long long int>> adj[n]; long long int tempA; long long int tempB; long

有人能不能快速看一下,指出我看不到的缺陷

代码如下:

int main()
{
    long long int n;
    long long int m;

    cin >> n;
    cin >> m;

    vector<pair<long long int, long long int>> adj[n];

    long long int tempA;
    long long int tempB;
    long long int tempC;

    for (long long int i = 0; i < m; i++)
    {
        cin >> tempA;
        cin >> tempB;
        cin >> tempC;

        adj[tempA - 1].push_back({tempB - 1, tempC});
    }

    long long int distance[n];
    bool processed[n];

    fill_n(distance, n, INT_MAX);
    fill_n(processed, n, false);

    priority_queue<pair<long long int, long long int>> q;

    distance[0] = 0;
    q.push({0, 0});
    while (!q.empty())
    {
        long long int a = q.top().second;
        q.pop();
        if (processed[a])
            continue;
        processed[a] = true;
        for (auto u : adj[a])
        {
            long long int b = u.first, w = u.second;
            if (distance[a] + w < distance[b])
            {
                distance[b] = distance[a] + w;
                q.push({-distance[b], b});
            }
        }
    }

    for (long long i = 0; i < sizeof(distance) / sizeof(distance[0]); i++)
    {
        cout << distance[i] << " ";
    }

    return 0;
}
intmain()
{
长整型n;
长整型m;
cin>>n;
cin>>m;
向量adj[n];
长内节拍;
长整型节拍;
长内节拍;
for(长整型i=0;i>坦帕;
cin>>tempB;
cin>>tempC;
形容词[tempA-1]。推回({tempB-1,tempC});
}
长整数距离[n];
布尔处理[n];
填充n(距离,n,最大内部);
填写n(已处理,n,假);
优先级队列q;
距离[0]=0;
q、 推送({0,0});
而(!q.empty())
{
长整型a=q.top().秒;
q、 pop();
如果(已处理[a])
继续;
已处理[a]=真;
用于(自动u:adj[a])
{
长整型b=u.first,w=u.second;
if(距离[a]+w<距离[b])
{
距离[b]=距离[a]+w;
q、 push({-距离[b],b});
}
}
}
对于(长i=0;iCUT欢迎访问堆栈溢出。请仔细查看页面。输入什么产生错误?非常大的<代码> N<代码>当声明3个数组时,溢出堆栈。注意,标准C++不允许使用可变大小的数组。<代码>向量ADJ[n];< /Cord>——这看起来像是来自所谓“极客”的代码。网站。这是无效的C++。你已经使用了矢量,所以你应该在它使用的地方使用它:<代码> STD::向量adj.(n);<代码> BoOL处理[n] < /Cord>和<代码>长距离[n];< /Cord>这是向量。@如果你去的话,什么是“极客网站”?“GeksFrEGEKEX”,他们的网站有一些关于如何解决各种问题的好信息,但是C++的实现在语言方面是非常差的。在同一代码中使用非标准的可变长度数组和向量是它们的一个特长。“欢迎访问堆栈溢出。请仔细查看我们的页面。输入什么产生错误?”非常大的<代码> N<代码>当声明3个数组时,溢出堆栈。注意,标准C++不允许使用可变大小的数组。<代码>向量adj[n];< /Cord>——这看起来像是来自所谓“极客”的代码。网站。这是无效的C++。你已经使用了矢量,所以你应该在它使用的地方使用它:<代码> STD::向量adj.(n);<代码> BoOL处理[n] < /Cord>和<代码>长距离[n];< /Cord>这是向量。@如果你去的话,什么是“极客网站”?“GEKEFFEGEKEX”,他们的网站有一些关于如何解决各种问题的好信息,但是C++实现,在大多数方面,在语言方面都很差。在同一代码中使用非标准可变长度数组和向量是它们的“特殊性”之一。