/*
* POJ3513
* DP + HASH
*/
/**
*
* @author 20053565
* @time Sat Apr 19 01:28:58 CST 2008
*/
import java.util.*;
import java.io.*;
public class Main
{
final static int maxn = 20000;
public static void main(String [] args) throws IOException
{
new Main().run();
}
int s, f, cnt;
TreeMap <String,Integer> tm = new TreeMap <String,Integer> ();
LinkedList [] map = new LinkedList [maxn];
class Info
{
int single, family;
int stot, ftot;
int sscnt, sfcnt;
int ffcnt, fscnt;
}
Info [] info = new Info [maxn];
public void run() throws IOException
{
BufferedReader in = new BufferedReader ( new InputStreamReader(System.in));
String line, father;
StringTokenizer st;
int cas = 1;
System.out.print(new Date());
line = in.readLine();
while(true)
{
st = new StringTokenizer(line);
s = Integer.parseInt(st.nextToken());
f = Integer.parseInt(st.nextToken());
if (s==0&&f==0)
{
break;
}
tm.clear();
cnt = 0;
boolean [] isRoot = new boolean [maxn];
for(int i = 0; i < maxn; i++)
{
map[i] = new LinkedList <Integer> ();
}
Arrays.fill(isRoot,true);
while(true)
{
line = in.readLine();
st = new StringTokenizer (line);
father = st.nextToken();
if(Character.isDigit(father.charAt(0)))
{
break;
}
int fa;
fa = getId(father);
while(st.hasMoreTokens())
{
int id = getId(st.nextToken());
map[fa].push(id);
isRoot[id] = false;
}
}
System.out.print((cas++)+". ");
int minfee = 0, scnt = 0, fcnt = 0;
for(int i = 0; i < cnt; i++)
{
if(isRoot[i])
{
dfs(i);
if(info[i].single < info[i].family ||
(info[i].single == info[i].family && info[i].stot < info[i].ftot))
{
minfee += info[i].single;
scnt += info[i].sscnt;
fcnt += info[i].sfcnt;
}
else
{
minfee += info[i].family;
scnt += info[i].fscnt;
fcnt += info[i].ffcnt;
}
}
}
System.out.println(scnt+" "+fcnt+" "+minfee);
}
in.close();
}
public void dfs(int u)
{
info[u] = new Info();
if(map[u].size()==0)
{
info[u].stot = 1;
info[u].ftot = 1;
info[u].fscnt = 0;info[u].ffcnt = 1;
info[u].sfcnt = 0;info[u].sscnt = 1;
info[u].single = s;
info[u].family = f;
return ;
}
for(int i = 0; i < map[u].size(); i++)
{
int v = (Integer)map[u].get(i);
dfs(v);
}
int feesingle, feefamily;
feesingle = s;
feefamily = f;
int stot, ftot, sscnt, ffcnt, sfcnt, fscnt;
stot = ftot = 1;
sscnt = ffcnt = 1;
sfcnt = fscnt = 0;
//single
for(int i = 0; i < map[u].size(); i++)
{
int v = (Integer)map[u].get(i);
if(info[v].single < info[v].family ||
(info[v].single == info[v].family && info[v].stot < info[v].ftot))
{
feesingle += info[v].single;
stot += info[v].stot;
sfcnt += info[v].sfcnt;
sscnt += info[v].sscnt;
}
else
{
feesingle += info[v].family;
stot += info[v].ftot;
sfcnt += info[v].ffcnt;
sscnt += info[v].fscnt;
}
}
//family
for(int i = 0; i < map[u].size(); i++)
{
int v = (Integer)map[u].get(i);
if(info[v].single - s < info[v].family ||
(info[v].single - s == info[v].family && info[v].stot - 1 < info[v].ftot))
{
feefamily += info[v].single - s;
ftot += info[v].stot - 1;
ffcnt += info[v].sfcnt;
fscnt += info[v].sscnt-1;
}
else
{
feefamily += info[v].family;
ftot += info[v].ftot;
ffcnt += info[v].ffcnt;
fscnt += info[v].fscnt;
}
}
int len = map[u].size();
info[u].stot = stot;
info[u].ftot = ftot;
info[u].sscnt = sscnt;info[u].sfcnt = sfcnt;
info[u].ffcnt = ffcnt;info[u].fscnt = fscnt;
info[u].single = feesingle;
info[u].family = feefamily;
}
public int getId(String name)
{
if(tm.containsKey(name))
{
return tm.get(name);
}
else
{
tm.put(name, cnt);
return cnt++;
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
acm_code_20053565
需积分: 9 13 下载量 61 浏览量
2008-11-29
20:06:12
上传
评论
收藏 706KB TGZ 举报
温馨提示
共2000个文件
c:1282个
cpp:1184个
cc:631个
acm code of 20053565 poj onlinejudge 高精度 DP 图论 算法 最大流 最小生成树 线段树
资源推荐
资源详情
资源评论
收起资源包目录
acm_code_20053565 (2000个子文件)
2971773_AC_0MS_104K.c 28KB
2971681_CE.c 20KB
3142002_CE.c 7KB
2447144_AC_1390MS_16968K.c 7KB
2446863_WA.c 7KB
2250730_AC_0MS_-12K.c 6KB
2250736_AC_0MS_-12K.c 6KB
1805846_AC_0MS_48K.c 5KB
2065890_CE.c 5KB
2065892_AC_171MS_28K.c 5KB
3107784_CE.c 5KB
2254363_AC_0MS_32K.c 5KB
2712963_WA.c 5KB
2254390_AC_15MS_28K.c 5KB
2253309_OLE.c 4KB
1901649_TLE.c 4KB
1901648_RE.c 4KB
1901426_TLE.c 4KB
1901422_RE.c 4KB
2745174_AC_62MS_284K.c 4KB
2409463_AC_0MS_40K.c 4KB
3094858_WA.c 3KB
1858781_AC_0MS_32K.c 3KB
1858773_WA.c 3KB
3094860_AC_1499MS_152K.c 3KB
1858734_WA.c 3KB
1858742_WA.c 3KB
1858736_WA.c 3KB
3027049_AC_342MS_152K.c 3KB
2015318_AC_15MS_256K.c 3KB
3103966_WA.c 3KB
3103925_WA.c 3KB
3104003_WA.c 3KB
3103900_WA.c 3KB
3103825_WA.c 3KB
3103822_WA.c 3KB
2435088_AC_46MS_544K.c 3KB
1901131_WA.c 3KB
1901130_RE.c 3KB
3100887_CE.c 3KB
1900999_WA.c 3KB
1900994_RE.c 3KB
2268709_WA.c 3KB
3107772_AC_125MS_24780K.c 3KB
2268606_WA.c 3KB
2434772_WA.c 3KB
1901200_WA.c 3KB
2850025_AC_2046MS_1088K.c 3KB
3101014_WA.c 3KB
3101023_WA.c 3KB
2434508_WA.c 3KB
2434500_WA.c 3KB
2268600_WA.c 3KB
2160848_CE.c 3KB
3101039_WA.c 3KB
2434685_RE.c 3KB
1980757_AC_0MS_56K.c 3KB
1980759_AC_0MS_56K.c 3KB
2434545_RE.c 3KB
2434539_RE.c 3KB
2434483_WA.c 3KB
2434429_WA.c 3KB
2268556_WA.c 3KB
2521136_AC_933MS_3740K.c 3KB
1903817_AC_825MS_3684K.c 3KB
1903818_AC_869MS_3684K.c 3KB
2819551_AC_917MS_3692K.c 3KB
1943016_CE.c 3KB
2495479_AC_0MS_192K.c 3KB
2495466_WA.c 3KB
3020068_AC_0MS_160K.c 3KB
3020067_RE.c 3KB
1980763_AC_15MS_56K.c 3KB
1898353_WA.c 3KB
1872143_AC_0MS_36K.c 3KB
3020066_WA.c 3KB
1828693_AC_15MS_36K.c 3KB
1903723_WA.c 3KB
1903721_WA.c 3KB
2169777_AC_964MS_6352K.c 3KB
2169755_CE.c 3KB
1898336_WA.c 3KB
1898275_WA.c 2KB
2268552_TLE.c 2KB
1903672_WA.c 2KB
1788804_RE.c 2KB
1788817_RE.c 2KB
1788825_RE.c 2KB
1788843_AC_513MS_1704K.c 2KB
1788845_RE.c 2KB
2217944_PE.c 2KB
2040341_AC_3920MS_96K.c 2KB
3140396_AC_219MS_5208K.c 2KB
2268544_WA.c 2KB
2040266_WA.c 2KB
2040262_RE.c 2KB
1835085_AC_419MS_1684K.c 2KB
1886900_AC_0MS_104K.c 2KB
2040302_TLE.c 2KB
4317150_AC_344MS_1016K.c 2KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
angelipin
- 粉丝: 18
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功