Esempio n. 1
0
int main() {  
    int m, i, n;  
    int s,t,c;  
      
    while(~scanf("%d%d",&m,&n)) {  
        M = 0;  
        memset(head,-1,sizeof(head));  
        memset(vis,0,sizeof(vis));  
        for(i = 0; i < n; i++) {  
            scanf("%d%d%d",&s,&t,&c);  
            add(s,t,c);  
        }  
        for(i = 1; i <= m; i++) {  
            if(!vis[i]&&!dfs0(i,-1))break;  
        }  
        if(i <= m){  
            printf("YES\n");  
        }  
        else {  
            ans = 0;  
            for(i = 1; i <= m; ++i){  
                if(vis[i]){  
                    dfs(i,-1);  
                }  
            }  
            printf("%d\n",ans);  
        }  
  
    }  
    return 0;  
}  
Esempio n. 2
0
int main() {
	freopen("folding.in", "r", stdin);
	freopen("folding.out", "w", stdout);
	for (int i = 0; i < 15; scanf("\n"), i++)
		for (int j = 0; j < 15; j++) {
			char ch = getchar();
			if (ch != '.') {
				int k = 0;
				for (; sym[k] != ch; k++);
				x[k] = i, y[k] = j;
			}
		}
	int td;
	for (int i = 1; i < 27; i++) {
		int d = 0;
		for (; d < 6; d++)
			if (x[i] == x[i-1]+dx[d] && y[i] == y[i-1]+dy[d] && dz[d] == 0)
				break;
		if (i > 1) f[i] = (d != td);
		td = d;
	}
	dfs0();
	for (int i = 0; i < 3; i++)
		for (int j = 0; j < 3; putchar(" \n"[j == 2]), j++)
			for (int k = 0; k < 3; k++) putchar(sym[a[i][j][k]]);
	return 0;
}
Esempio n. 3
0
bool dfs0(int u,int pre){  
    int v;  
    vis[u] = 1;  
    for(int i = head[u]; i != -1; i = edge[i].next){  
        v = edge[i].v;  
        if(v == pre)continue;  
        if(vis[v] || !dfs0(v,u) )return 0;  
    }  
    return 1;  
}  
Esempio n. 4
0
int dfs0(int node, int pa)
{
	int ans = value[node];
	for (int e = nrbegin[node]; e; e = nrnext[e]) {
		int son = nrto[e];
		if (son == pa)
			continue;
		ans += std::max(0, dfs0(son, node) - 2 * cost[nredge[e]]);
	}
	return dp0[node] = ans;
}
Esempio n. 5
0
/* 简单遍历 */
void dfs0(int h, int k)
{
	int i;

	v[k] = 1;
	for (i = 0; i < h; i++)
	{
		printf("\t");
	}
	printf("%d \n", k);

	for (i = 0; i < n; i++)
	{
		if (!v[i] && G[k][i])
		{
			dfs0(h+1, i);
			v[i] = 0;
		}
	}
}
Esempio n. 6
0
inline void do_dp0()
{
	dfs0(1, 0);
}