同时懂pascal和C++的大牛进!

来源:百度知道 编辑:UC知道 时间:2024/06/04 09:57:00
帮忙把这段pascal的代码翻译成C++的,我看不懂pascal.多谢!

program butter;
type
xxx=record
t,d:longint;
end;
const
oo = maxlongint;
var
m,sum,min,o:longint;
nn,n,p,c,source:integer;
che:array[1..1450] of integer;
h:array[1..1450] of integer;
d: array[1..1450] of longint;
g: array[1..800, 1..800] of xxx;

procedure inputfile;
begin
assign(input,'butter.in');
reset(input);
assign(output,'butter.out');
rewrite(output);
end;
procedure closefile;
begin
close(input); close(output);
end;
procedure spfa(v:integer);
var
stack:array[1..10000] of integer;
use :array[1..800] of boolean;
len,i:integer;
now,q:integer;
begin
for i:=1 to n do begin d[i]:=oo; use[i]:=false;end;
len:=1;
stack[len]:=v;
d[v]:=0;
q:=1;
use[v]

能看出来,一般问出高水平编程问题的大多是OIer,LZ是Oier没错吧?
我n!年前曾经是OIer,我给你看一下:
30分钟一下给你翻译完,别忘了加分哦!
好了
//program butter
//注意用较高版本的g++编译
#include<fstream>
using namespace std;
typedef struct
{
int t,d;
}XXX;
const oo=2147483647;
int m,sum,min,o;
int nn,n,p,c,source;
int che[1451],h[1451],d[1451];
XXX g[801][801];
ifstream fin("butter.in");
ofstream fout("butter.out");
void spfa(int v)
{
int stack[1001];
bool use[801];
int now,q,len,i;
for (i=1;i<=n;i++)
{
d[i]=oo;use[i]=false;
}
len=1;stack[len]=v;d[v]=0;q=1;use[v]=true;
while (len>0)
{
now=stack[q];
for (i=1;i<=h[now];i++)
{
if (d[g[now][i]].t>d[now]+g[now][i].d)
{
d[g[now][i]].t=d[now]+g[now][i].d;
}//注:pascal程序此处没有end;
//但此处经推断