以下是我的code
想問看看:為什麼在這AC,在UVA卻WA (?
謝謝 !
#include<iostream>
using namespace std;
int main()
{
int n;
int adj[199][199][2];
while(scanf("%d",&n) && n)
{
int color[199]={0};
int count[199]={0};
int len;
scanf("%d",&len);
int from;
int to;
for(int i=0;i<len;i++)
{
scanf("%d%d",&from,&to);
if(color[from] == 1)
color[to]=0;
else
color[to]=1;
adj[from][count[from]][0]=to;
adj[from][count[from]][1]=color[to];
count[from]++;
}
bool bicolor=true;
for(int i=0;i<n && bicolor;i++)
{
for(int j=0;j<count[i];j++)
{
if(adj[i][j][1] != color[adj[i][j][0]])
{
bicolor=false;
break;
}
}
}
if(bicolor)
printf("BICOLORABLE.\n");
else
printf("NOT BICOLORABLE.\n");
}
return 0;
}
以下是我的code
想問看看:為什麼在這AC,在UVA卻WA (?
謝謝 !
#include
using namespace std;
int main()
{
int n;
int adj[199][199][2];
while(scanf("%d",&n) && n)
{
int color[199]={0};
int count[199]={0};
int len;
scanf("%d",&len);
int from;
int to;
for(int i=0;i {
scanf("%d%d",&from,&to);
if(color[from] == 1)
color[to]=0;
else
color[to]=1;
adj[from][count[from]][0]=to;
adj[from][count[from]][1]=color[to];
count[from]++;
}
bool bicolor=true;
for(int i=0;i {
for(int j=0;j {
if(adj[i][j][1] != color[adj[i][j][0]])
{
bicolor=false;
break;
}
}
}
if(bicolor)
printf("BICOLORABLE.\n");
else
printf("NOT BICOLORABLE.\n");
}
return 0;
}
上面的演算法是錯的,有bug
自己用了一組測資
4
3
0 3
1 2
2 3
這一組明顯是BICOLORABLE.
不過跑出來是NOT BICOLORABLE.
希望出題者多加強一下測資並重測
然後這一題用了DFS跑,總算UVA那也AC了 XDD