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;i CUT欢迎访问堆栈溢出。请仔细查看页面。输入什么产生错误?非常大的<代码> 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++实现,在大多数方面,在语言方面都很差。在同一代码中使用非标准可变长度数组和向量是它们的“特殊性”之一。