poj Corporative Network

来源:互联网 发布:手机淘宝下载安装2016 编辑:程序博客网 时间:2024/04/28 00:57

题目链接:http://poj.org/problem?id=1962

题目思路:并查集。

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<string>#include<queue>#include<math.h>#include<algorithm>#include<vector>#include<stack>#include<list>#include<iostream>#include<map>using namespace std;#define inf 0x3f3f3f3f#define Max 110int max(int a,int b){return a>b?a:b;}int min(int a,int b){return a<b?a:b;}int father[20100],val[20100],n,t;inline void init(){    int i;    for(i=0;i<=n;i++)        father[i]=i,val[i]=0;}inline int find(int x){    int tmp;    if(x!=father[x])    {        tmp=father[x];        father[x]=find(father[x]);        val[x]=val[tmp]+val[x];    }    return father[x];}int main(){    int i,x,y;    char op[2];    scanf("%d",&t);    while(t--)    {        scanf("%d",&n);        init();        while(scanf("%s",op)!=EOF)        {            if(op[0]=='O')                break;            if(op[0]=='E')            {                scanf("%d",&x);                find(x);                printf("%d\n",val[x]);            }            else            {                scanf("%d%d",&x,&y);                father[x]=y;                val[x]+=abs(x-y)%1000;            }        }    }    return 0;}


 

原创粉丝点击