c,c++代码转换为pascal
#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<ctime>#incl...
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<ctime>
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
struct node{
int x,y,z;
}edge[10005];
int N,M,father[2005];
void _in(int &x)
{
char t;
t=getchar();
while(t<'0'||'9'<t) t=getchar();
for(x=t-'0',t=getchar()'0'<=t&&t<='9';x=x*10+t-'0',t=getchar());
}
int _getfather(int x)
{
if(x!=father[x]) father[x]=_getfather(father[x]);
return father[x];
}
void _qst_edge(int l,int r)
{
int i=l,j=r,mz=edge[(i+r)>>1].z;
while(i<=j)
{
while(edge[i].z<mz) i++;
while(edge[j].z>mz) j--;
if(i<=j)
{
swap(edge[i],edge[j]);
i++;j--;
}
}
if(l<j) _qst_edge(l,j);
if(i<r) _qst_edge(i,r);
}
void _kruskal()
{
int fx,fy,cnt,k,ans;
cnt=k=ans=0;
while(cnt<N-1)
{
k++;
fx=_getfather(edge[k].x);
fy=_getfather(edge[k].y);
if(fx!=fy)
{
father[fx]=fy;
ans=max(ans,edge[k].z);
cnt++;
}
}
printf("%d\n",ans);
}
void _init()
{
_in(N);_in(M);
for(int i=1;i<=M;i++)
{
_in(edge[i].x);
_in(edge[i].y);
_in(edge[i].z);
}
_qst_edge(1,M);
for(int i=1;i<=N;i++)
father[i]=i;
}
void _solve()
{
_kruskal();
}
int main()
{
_init();
_solve();
return 0; } 展开
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<ctime>
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
struct node{
int x,y,z;
}edge[10005];
int N,M,father[2005];
void _in(int &x)
{
char t;
t=getchar();
while(t<'0'||'9'<t) t=getchar();
for(x=t-'0',t=getchar()'0'<=t&&t<='9';x=x*10+t-'0',t=getchar());
}
int _getfather(int x)
{
if(x!=father[x]) father[x]=_getfather(father[x]);
return father[x];
}
void _qst_edge(int l,int r)
{
int i=l,j=r,mz=edge[(i+r)>>1].z;
while(i<=j)
{
while(edge[i].z<mz) i++;
while(edge[j].z>mz) j--;
if(i<=j)
{
swap(edge[i],edge[j]);
i++;j--;
}
}
if(l<j) _qst_edge(l,j);
if(i<r) _qst_edge(i,r);
}
void _kruskal()
{
int fx,fy,cnt,k,ans;
cnt=k=ans=0;
while(cnt<N-1)
{
k++;
fx=_getfather(edge[k].x);
fy=_getfather(edge[k].y);
if(fx!=fy)
{
father[fx]=fy;
ans=max(ans,edge[k].z);
cnt++;
}
}
printf("%d\n",ans);
}
void _init()
{
_in(N);_in(M);
for(int i=1;i<=M;i++)
{
_in(edge[i].x);
_in(edge[i].y);
_in(edge[i].z);
}
_qst_edge(1,M);
for(int i=1;i<=N;i++)
father[i]=i;
}
void _solve()
{
_kruskal();
}
int main()
{
_init();
_solve();
return 0; } 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询