这是自己写的一段代码,用测试用例运行成功,提交失败,显示“错误”,求大神解答!!!
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int Map[10000][10000];
long INF=1000001;
struct dd
{
long length;
long need_lengthmin;
};
dd D[10001];
vector<int> s;
vector<int> q;
int main()
{
long n,m;
cin>>n>>m;
int a,b,c;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
Map[i][j]=INF;
}
for(long i=0;i<m;i++)
{
cin>>a>>b>>c;
Map[a-1][b-1]=Map[b-1][a-1]=c;
}
for(long i=0;i<n;i++)
{
D[i].length = INF;
D[i].need_lengthmin =INF;
}
for(long i=0;i<n;i++)
{
Map[i][i]=0;
}
D[0].length=0;
D[0].need_lengthmin=0;
for(int i=0;i<n;i++)
q.push_back(i);
long minflag=INF;
long v;
while(q.size()!=0)
{
minflag=INF;
for(long i=0;i<q.size();i++)
{
if(D[q[i]].length<minflag)
{
minflag = D[q[i]].length;
v=i;
}
}
//cout<<v<<endl;
//cout<<q[v]<<endl;
s.push_back(q[v]);
int j=q[v];
q.erase(q.begin()+v);
for(long k=0;k<q.size();k++)
{
if(Map[j][q[k]]!=INF)
{
if(D[q[k]].length>D[j].length+Map[j][q[k]])
{
D[q[k]].length=D[j].length+Map[j][q[k]];
D[q[k]].need_lengthmin = Map[j][q[k]];
}
else
if((D[q[k]].length==(D[j].length+Map[j][q[k]]))&&(D[q[k]].need_lengthmin>Map[j][q[k]]))
D[q[k]].need_lengthmin=Map[j][q[k]];
else;
}
}
}
long long lengthall=0;
for(long i=0;i<n;i++){
//cout<<D[i].need_lengthmin<<endl;
lengthall = lengthall +D[i].need_lengthmin;
}
cout<<lengthall;
return 0;
}