虽然今天是521 可能日子比较好。但是再好的日子也不能平息我心中的怒火。
今天晚上 的信息课,我就只刷了一道题,就是弗洛伊德的最短路的那个什么的集合。
总之也算一道模板题吧。但是,我就是过不了。样例是过了的,但是交到OJ上就是零分。于是,锲而不舍又坚持不懈的我就交了好几次, 但是都是零分!!!然后我火了,就重新打了一遍,然后就过了。但是我根本看不出有什么区别,除了部分语句 的顺序换了一下,其他的都没有啊。
所以,这是零分的程序——
#include<bits/stdc++.h>
using namespace std;
int a[2550][2550];
int n,m;
int main()
{
memset(a,10,sizeof(a));
cin>>n>>m;
for (int i=1;i<=m;i++)
{
int x,y;
cin>>x>>y;
a[x][y]=a[y][x]=1;
}
for (int k=1;k<=n;k++)
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
a[i][j]=min(a[i][j],a[i][k]+a[k][j]);
for (int i=1;i<=m;i++) a[i][i]=0;
int l;
cin>>l;
for (int i=1;i<=l;i++)
{
int v,u;
cin>>v>>u;
for (int j=1;j<=n;j++)
if (a[v][j]+a[j][u]==a[v][u])
cout<<j<<" ";
cout<<endl;
}
return 0;
}
这是满分的程序——
#include<bits/stdc++.h>
using namespace std;
int a[3000][3000];
int n,m;
int main()
{
cin>>n>>m;
memset(a,10,sizeof(a));
for (int i=1;i<=m;i++)
{
int x,y;
cin>>x>>y;
a[x][y]=a[y][x]=1;
}
for (int k=1;k<=n;k++)
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
a[i][j]=min(a[i][j],a[i][k]+a[k][j]);
int k;
cin>>k;
for (int i=1;i<=n;i++) a[i][i]=0;
for (int i=1;i<=k;i++)
{
int u,v;
cin>>v>>u;
for (int j=1;j<=n;j++)
if (a[v][j]+a[j][u]==a[v][u])
cout<<j<<" ";
cout<<endl;
}
return 0;
}
等我有时间在研究他们那里有区别。