rt,一份普通的最短路
#include <bits/stdc++.h>
using namespace std;
inline int read()
{
int x = 0;
char ch = getchar();
while ((ch < '0' || ch > '9') && (ch ^ -1))
ch = getchar();
while (ch >= '0' && ch <= '9') {
x = (x << 3) + (x << 1) + (ch ^ 48);
ch = getchar();
}
//cerr<<x<<' ';
return x;
}//一份普通的快读
(省略)
void add(int u,int v,int c){
cerr<<u<<' '<<v<<' '<<c<<endl;
nxt[++cnt]=fir[u],fir[u]=cnt,to[cnt]=v,w[cnt]=c;
}
int main(){
int n=read(),m=read(),s=read();
for(int i=1,u,v,c;i<=m;i++) /*u=read(),v=read(),c=read(),*/add(read(),read(),read());
我刚开始发现这个代码输出错了,然后进行调试,最后在add函数中加上了调试语句,发现当输入为
4 6 1
1 2 2
2 3 2
2 4 1
1 3 5
3 4 3
1 4 4
时,cerr的输出为
2 2 1
2 3 2
1 4 2
5 3 1
3 4 3
4 4 1
而当我把
for(int i=1;i<=m;i++) add(read(),read(),read());
改为
for(int i=1,u,v,c;i<=m;i++) u=read(),v=read(),c=read(),add(u,v,c);
后,cerr的输出又变为了正常的
1 2 2
2 3 2
2 4 1
1 3 5
3 4 3
1 4 4
请问这是怎么回事?