tmpx

/*************************************************************************
> File Name: code/2015summer/0713kk.cpp
> Author: 111qqz
> Email: [email protected]
> Created Time: 2015年07月13日 星期一 15时21分40秒
************************************************************************/

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<map>
#include<set>
#include<queue>
#include<vector>
#include<stack>
using namespace std;
#define REP(i, n) for (int i=0;i<int(n);++i)
typedef long long LL;
typedef unsigned long long ULL;
const int N=1E3+5;
vector<int> edge[N];
int query[N][N],f[N],count[N],indeg[N];
int vis[N],n,m;

int findSet(int x)
{
if(x!=f[x])
{
f[x]=findSet(f[x]);
}
return f[x];
}

void Tarjan(int u)
{
f[u]=u;
for(int i=0;i<edge[u].size();i++)
{
Tarjan(edge[u][i]);
father[edge[u][i]]=u;
}
vis[u]=1;
for(int i=1;i<=n;i++)
if(vis[i] && query[u][i])
count[findSet(i)]+=query[u][i];
}
void init()
{

for(int i=1;i<=n;i++)
edge[i].clear();
memset(query,0,sizeof(query));
memset(vis,0,sizeof(vis));
memset(count,0,sizeof(count));
memset(indeg,0,sizeof(indeg));
}

int main()
{

while(scanf("%d",&n)!=EOF)
{
int u,v;
for(int i=0;i<n;i++)
{
scanf("%d:(%d)",&u,&m);
while(m--)
{
scanf(" %d",&v);
edge[u].push_back(v);
indeg[v]++;
}
}
scanf(" %d",&m);
for(int i=0;i<m;i++)
{
scanf(" (%d %d)",&u,&v);
query[u][v]++;
query[v][u]++;
}
for(int i=1;i<=n;i++)
if(indeg[i]==0)
{
Tarjan(i);
break;
}
for(int i=1;i<=n;i++)
if(count[i])
printf("%d:%d\n",i,count[i]);
}
return 0;
}

时间: 2024-11-10 05:06:16

tmpx的相关文章

第四周作业

第四周作业 1.复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. (1)复制/etc/skel目录为/home/tuser1 [[email protected] ~]# cp -r /etc/skel/ /home [[email protected] ~]# mv /home/skel /home/tuser1 [[email protected] ~]# ll -a /home/tuser1/ total 2

下拉选择列表控件

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data;using System.ComponentModel;using DevComponents.DotNetBar; namespace EfwControls.CustomControl{ public partial class GridBo

HDU 4311 Meeting point-1 &amp;&amp; HDU 4312 Meeting point-2

这俩个题  题意::给出N(<1e5)个点求找到一个点作为聚会的地方,使每个点到达这里的距离最小.4311是 曼哈顿距离 4312是 切比雪夫距离: 曼哈顿距离 :大家都知道 对于二维坐标系a(xa,yb),b(xb,yb)的曼哈顿距离是abs(xa-xb)+abs(ya-yb): 看的出来这个距离和x,y 都有关,但是X,Y并不相互影响,所以可以分开计算这样,分开计算的好处如下: 如果 只给一个维度的坐标系 ,我们是不可以再什么养的复杂度的时间内处理出来呢? 大难还是很好想的先排序一下,会发现

四则运算表达式求值 OpenJ_Bailian - 4132

四则运算表达式求值 OpenJ_Bailian - 4132 题意:设计一个计算器,实现+-*/以及()的表达式运算求值. 栈的应用,这学期学数据结构,手写了栈练一下~ 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int maxn=10010; //最大表达式长度 4 5 template <typename T> 6 class Stack; 7 8 template <typename T> 9

POJ 2329 -- Nearest number - 2

Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 4224   Accepted: 1308 Description Input is the matrix A of N by N non-negative integers. A distance between two elements Aij and Apq is defined as |i ? p| + |j ? q|. Your program must repla

BZOJ 1696 [Usaco2007 Feb]Building A New Barn新牛舍 数学

题意:链接 方法:数学+模拟 解析: 首先这类问题不是第一次见了,所以直接知道拿x的中位数.y的中位数. 这题就是讨论情况很的烦. 题中有个限制,给出待求和的点不能选取. 所以假设奇数个点,求出x中位数,y中位数. 检验x,y是否存在待求和的点集里,如存在则推断四种情况. 推断的四种情况各自是(x-1,y),(x+1,y),(x,y-1),(x,y+1),次优解一定存在于这四种情况中,这个应该很好理解? 假设不存在于原点集中.则直接求和. 假设偶数个点,则讨论全部x可取值以及y可取值就可以,建议

HDU5130 Signal Interference

1 /* 2 HDU5130 Signal Interference 3 http://acm.hdu.edu.cn/showproblem.php?pid=5130 4 计算几何 圆与多边形面积交 5 * 6 */ 7 8 9 #include <cstdio> 10 #include <algorithm> 11 #include <cmath> 12 using namespace std; 13 const double Pi=acos(-1.0); 14 co

POJ - 3669 Meteor Shower(bfs)

题意:某人在时刻0从原点出发,在第一象限范围内移动.已知每个炸弹爆炸的地点和时刻,炸弹爆炸可毁坏该点和它上下左右的点.不能经过已毁坏的点,也不能在某点毁坏的时候位于该点.不会被炸弹毁坏的地方是安全之处,问某人到达安全之处的最短时间. 分析:bfs即可.注意:1.某点多次爆炸或受爆炸点影响而毁坏,取最早时间为该点的毁坏时间.2.bfs走过的点不能再走,注意标记. #pragma comment(linker, "/STACK:102400000, 102400000") #include

作业2

1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可. [[email protected] ~]# who | cut -d' ' -f1 | uniq root [[email protected] ~]# 2.取出当前系统上被用户当作其默认shell的最多的那个shell. [[email protected] ~]# cut -d: -f7 /etc/passwd|uniq -c|sort -n       1 /bin/bash       1 /b