| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
我用Krus ,给边排序时 先按照边长,再按照节点名称(小端点在前)为什么不对呢??(内附代码)#include<cstdio>
#include<cstring>
#include<set>
#include<map>
#include<string>
#include<vector>
#include<iostream>
#include<algorithm>
#include<queue>
#include<sstream>
#include<math.h>
#include<stack>
using namespace std;
#define FOR(i,s,e) for(i = s;i<e;i++)
#define SET(add,v) memset(add,v,sizeof(add))
#define VI vector<int>
#define VS vector<string>
#define ISS istringstream
#define OSS ostringstream
#define MAX 100
struct node
{
int id1,id2;
int length;
}edges[MAX * MAX];
bool operator <(const node &a,const node &b)
{
if (a.length != b.length)
{
return a.length < b.length;
}
if (a.id1 != b.id1)
{
return a.id1 < b.id1;
}
return a.id2 < b.id2;
}
int mapp[MAX][MAX];
int n;
int cnt;
int pre[MAX];
int getHead(int id)
{
if (id != pre[id])
{
pre[id] = getHead(pre[id]);
}
return pre[id];
}
int getN(char *tar)
{
int back = 0;
while (true)
{
if (*tar >= '0' && *tar <= '9')
{
back = back * 10 + *tar - '0';
}
else
return back;
tar++;
}
}
int main(){
freopen("in.txt","r",stdin);
int casei;
scanf("%d",&casei);
int i,j;
int cc = 1;
while (casei--)
{
cnt = 0;
char tempc;
FOR(i,0,MAX)
{
pre[i] = i;
}
cin>>n;
FOR(i,0,n)
{
FOR(j,0,n)
{
scanf("%d",&mapp[i][j]);
scanf("%c",&tempc);
}
}
FOR(i,0,n)
{
FOR(j,i + 1,n)
{
if (mapp[i][j])
{
edges[cnt].id1 = i;
edges[cnt].id2 = j;
edges[cnt++].length = mapp[i][j];
}
}
}
sort(edges,edges + cnt);
cout<<"Case "<<cc++<<":"<<endl;
int ccnt = 0;
FOR(i,0,cnt)
{
node tn = edges[i];
if (getHead(tn.id1) != getHead(tn.id2))
{
pre[tn.id1] = getHead(tn.id2);
edges[ccnt ++] = tn;
}
if (ccnt == n - 1)
{
break;
}
}
FOR(i,0,n - 1)
{
cout<<(char)(edges[i].id1 + 'A')<<'-'<<char(edges[i].id2 + 'A')<<' '<<edges[i].length<<endl;
}
cout<<endl;
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator